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

cem*_*ick 15 javascript functional-programming

简而言之,这有效:

[1, 2, 3].reduce(function (a, b) { return Math.max(a, b); });
=> 3
Run Code Online (Sandbox Code Playgroud)

但这不是:

[1, 2, 3].reduce(Math.max);
=> NaN
Run Code Online (Sandbox Code Playgroud)

纯粹的困惑.

这是在Firefox 3.5.9中,我认为它是使用reduce,FWIW 的mozilla标准实现.

ken*_*ytm 20

Math.max可以用作高阶函数.问题是.reduce将使用4个参数调用该函数:

Math.max(accumulator, value, index, the_array)
Run Code Online (Sandbox Code Playgroud)

这是the_array一个数组,所以Math.max返回NaN.我认为丢弃最后两个参数的方法并不简单.