javascript - js为何不做简化工作?
PHPz
PHPz 2017-04-11 12:59:49
[JavaScript讨论组]

js获得一个数组的最大值还要
Math.max.apply(null,arr)
为何不做简化
'str'.length;
如果可以这样
arr.max;
不是更好?
不这样简化的理由是什么?
很多语言都可以
arr.max
arr.max()
max(arr)

PHPz
PHPz

学习是最好的投资!

全部回复(8)
伊谢尔伦
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这门动态语言的魅力。

PHPz

原生js数组没有这个max方法,只能这样做。
使用js就要遵守他的语法,说起来很心酸的样子。

黄舟

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
PHP中文网
  1. 先问有没有做,再问该不该做,最后等你确信 “没有”, “该”,才是你问这个问题的时候

  2. 至于“很多语言都有xx,js没有xx” —— 人家乐意,你管得着?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号