Почему я не могу написать [1,2,3].reduce(Math.max) в Javascript?
Возможный дубликат:
Как использовать Math.max и т.д. как функции более высокого порядка
Используя функции расширения "расширенных" функций в браузере Mozilla Javascript 1.6 (отображение, уменьшение, фильтр и т.д.), почему это работает так, как ожидалось:
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
Math.max
не знает, что делать со всеми дополнительными переменными function(previousValue, currentValue, index, array)
, главным образом, этим массивом в конце.
[].reduce.call([1,2,3,6],function(a,b) { return Math.max(a,b); });
Это работает и использует . call