扫码关注官方订阅号
js获得一个数组的最大值还要 Math.max.apply(null,arr)为何不做简化'str'.length; 如果可以这样 arr.max; 不是更好?不这样简化的理由是什么? 很多语言都可以arr.maxarr.max()max(arr)
学习是最好的投资!
function max(arr){ return Math.max.apply(null,arr); }
max(arr);
多动脑子,而非抱怨。——阿拉伯谚语
es7提案中有一个叫函数绑定的东西,就是在简化。
函数绑定说到底应该还是一个语法糖,因为不可能从语言底层去修改其实现机制,所以提供语法糖来弥补。
最后扯几句,毕竟js是不到10天设计出来的,大大小小的设计缺陷肯定难免,coffee、es6、es7很多工作都是在填坑。
虽然不想探讨语言问题,不过既然你提到了很多,我认为还是有必要说一下。C和JAVA都没有你所说的这种方式(即arr.max()可以返回一个数组中的最大值)。
此外,JS的数组并不是泛型数组,如果是泛型数组,那么这样的arr.max()可以通过自定义比较器来实现多态,还是不错的。但是他不是泛型数组,也就是说数组里面任何类型都可能,那如果像你所说有这么一个max方法,那么判断大小的依据是什么?也许你会想到sort那样可以利用自定义比较函数的方法,但是那已经超出了Math提供的max的本意。有需求,自己封装就行了,这才是JS这门动态语言的魅力。
原生js数组没有这个max方法,只能这样做。使用js就要遵守他的语法,说起来很心酸的样子。
js
max
javascript 中的数组是对象,它的长度及其中元素的类型都是不固定的。如果提供了取最值的方法,那么如下数组的计算结果未必是我们想要的。
arr = [1,2,3,'a','b',[],{}]
所以 js 提供了 Math 这个内置对象,可以用来进行数学运算。
js没有max这东西
自己写一个很简单
Array.prototype.max = function () { return Math.max.apply(null, this) } console.log([1, 3, 5, 2].max()) //5
先问有没有做,再问该不该做,最后等你确信 “没有”, “该”,才是你问这个问题的时候
至于“很多语言都有xx,js没有xx” —— 人家乐意,你管得着?
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
es7提案中有一个叫函数绑定的东西,就是在简化。
函数绑定说到底应该还是一个语法糖,因为不可能从语言底层去修改其实现机制,所以提供语法糖来弥补。
最后扯几句,毕竟js是不到10天设计出来的,大大小小的设计缺陷肯定难免,coffee、es6、es7很多工作都是在填坑。
虽然不想探讨语言问题,不过既然你提到了很多,我认为还是有必要说一下。C和JAVA都没有你所说的这种方式(即arr.max()可以返回一个数组中的最大值)。
此外,JS的数组并不是泛型数组,如果是泛型数组,那么这样的arr.max()可以通过自定义比较器来实现多态,还是不错的。但是他不是泛型数组,也就是说数组里面任何类型都可能,那如果像你所说有这么一个max方法,那么判断大小的依据是什么?也许你会想到sort那样可以利用自定义比较函数的方法,但是那已经超出了Math提供的max的本意。有需求,自己封装就行了,这才是JS这门动态语言的魅力。
原生
js数组没有这个max方法,只能这样做。使用
js就要遵守他的语法,说起来很心酸的样子。javascript 中的数组是对象,它的长度及其中元素的类型都是不固定的。
如果提供了取最值的方法,那么如下数组的计算结果未必是我们想要的。
所以 js 提供了 Math 这个内置对象,可以用来进行数学运算。
js没有max这东西
自己写一个很简单
先问有没有做,再问该不该做,最后等你确信 “没有”, “该”,才是你问这个问题的时候
至于“很多语言都有xx,js没有xx” —— 人家乐意,你管得着?