如何使用Math.max等作为高阶函数

时间:2010-05-18 11:21:21

标签: javascript functional-programming

简而言之,这有效:

[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。

2 个答案:

答案 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