javascript - 为什么我不能用 Javascript 写 [1,2,3].reduce(Math.max)?

标签 javascript functional-programming

<分区>

Possible Duplicate:
How to use Math.max, etc. as higher-order functions

使用 Mozilla 的 Javascript 1.6 数组“扩展”功能(map、reduce、filter 等),为什么以下内容会按预期工作:

var max = [1,2,3].reduce(function(a,b) { return Math.max(a,b); });

但以下不起作用(它产生 NaN):

var max2 = [1,2,3].reduce(Math.max);

是因为 Math.max 是可变参数函数吗?

最佳答案

Math.max不知道如何处理所有额外变量 function(previousValue, currentValue, index, array)主要是最后的数组。

[].reduce.call([1,2,3,6],function(a,b) { return Math.max(a,b); });

这有效并使用 .call

关于javascript - 为什么我不能用 Javascript 写 [1,2,3].reduce(Math.max)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6821435/

相关文章:

javascript - 检查单击时正在使用哪个光标的简单方法?

javascript - 实时监控网站更新

javascript - 使用 JavaScript 创建文本文件

ios - RxSwift flatMapLatest 无需处理以前的可观察值

swift - Grand Central Dispatch 寻找不同的方法

functional-programming - 如何在纯函数式编程中执行副作用?

javascript - 关闭表折叠行

javascript - 在 jquery 中更新自定义数据属性名称

javascript - 如何在不改变状态的情况下操作传递给函数的对象的属性

functional-programming - ocaml中的复合函数