In short, this works:

```
[1, 2, 3].reduce(function (a, b) { return Math.max(a, b); });
=> 3
```

But this doesn't:

```
[1, 2, 3].reduce(Math.max);
=> NaN
```

Pure puzzlement.

This is in Firefox 3.5.9, which I presume is using the mozilla standard implementation of reduce, FWIW.

`Math.max`

can be used as a higher-order function. The problem is `.reduce`

will call the function with 4 arguments:

```
Math.max(accumulator, value, index, the_array)
```

here is `the_array`

is an array, so `Math.max`

returns NaN. I don't think there's simpler way to discard the last 2 arguments.

```
Math.max.apply(Math, [1, 2, 3]);
//3
```

©2020 All rights reserved.