Почему я не могу написать [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