Короче говоря, это работает:
[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, уменьшают, FWIW.
Math.max
можно использовать как функцию высшего порядка. Проблема в том, что reduce
вызовет функцию с 4 аргументами:
Math.max(accumulator, value, index, the_array)
вот the_array
- это массив, поэтому Math.max
возвращает NaN. Я не думаю, что есть более простой способ отбросить последние 2 аргумента.