总之,这个工程:如何使用Math.max等作为高阶函数
[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。
总之,这个工程:如何使用Math.max等作为高阶函数
[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。
Math.max
可以用作高阶函数。问题是.reduce
会调用该函数与4个参数:
Math.max(accumulator, value, index, the_array)
这里是the_array
是一个数组,所以Math.max
返回NaN。我不认为有更简单的方法可以放弃最后2个参数。
这就是我没有仔细阅读MDC文档所得到的结果。疯狂的想法减少FN,国际海事组织,但嘿,这是JavaScript! ;-) 谢谢。 – cemerick 2010-05-18 13:35:04
Math.max.apply(Math, [1, 2, 3]);
//3
术语nitpick:您并不是试图将Math.max用作高阶函数,而是将其用作高阶函数的参数。将它用作高阶函数意味着将它用作函数的参数(或者使用它来返回函数)。 – sepp2k 2010-05-18 11:50:34
@ sepp2k完美公平挑剔。 :-) – cemerick 2010-05-18 13:35:32
减少规格在这里https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/Reduce – 2012-09-27 07:45:22