为什么我不能在Javascript中编写[1,2,3] .reduce(Math.max)?

时间:2011-07-25 19:43:46

标签: javascript functional-programming

  

可能重复:
  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是一个可变函数吗?

1 个答案:

答案 0 :(得分:14)

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

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

这可以使用.call