简而言之,这有效:
[1, 2, 3].reduce(function (a, b) { return Math.max(a, b); });
=> 3
但这不是:
[1, 2, 3].reduce(Math.max);
=> NaN
纯粹的困惑。
这是在Firefox 3.5.9中,我认为它使用的是mozilla standard implementation of reduce,FWIW。
答案 0 :(得分:20)
Math.max
可用作高阶函数。问题是.reduce
将使用4个参数调用该函数:
Math.max(accumulator, value, index, the_array)
这里the_array
是一个数组,因此Math.max
返回NaN。我认为丢弃最后两个参数的方法并不简单。
答案 1 :(得分:0)
Math.max.apply(Math, [1, 2, 3]);
//3