Javascript 使用Math.max调用Array.prototype.map将返回NaN的数组

Javascript 使用Math.max调用Array.prototype.map将返回NaN的数组,javascript,arrays,Javascript,Arrays,为什么[1,2,3].map((x)=>Math.max(x))返回[1,2,3] 然而[1,2,3].map(Math.max)返回[NaN,NaN,NaN] 我会想,既然[1,2,3].map(Number)返回[1,2,3],以同样的方式使用Math.max也是如此 特别是因为Math.max(3)=Number(3)这是因为调用回调时使用了三个参数: 当前数组元素 当前元素的索引 调用了数组map 所以[1,2,3].map(Math.max)并不等同于[1,2,3].map((x)=>

为什么
[1,2,3].map((x)=>Math.max(x))
返回
[1,2,3]

然而
[1,2,3].map(Math.max)
返回
[NaN,NaN,NaN]

我会想,既然
[1,2,3].map(Number)
返回
[1,2,3]
,以同样的方式使用
Math.max也是如此

特别是因为
Math.max(3)=Number(3)

这是因为调用回调时使用了三个参数:

  • 当前数组元素
  • 当前元素的索引
  • 调用了数组
    map
  • 所以
    [1,2,3].map(Math.max)
    并不等同于
    [1,2,3].map((x)=>Math.max(x))
    ,而是
    [1,2,3].map((x,i,arr)=>Math.max(x,i,arr))


    Math.max(1,0,[1,2,3])
    NaN
    ,因为
    [1,2,3]
    数组在字符串化时变成
    “1,2,3”
    ,在转换为数字时变成
    NaN

    您可以使用:
    Math.max(…[1,2,3])
    这是因为数组作为回调参数
    Math.max
    需要数字,而不是用点分隔的数字字符串。这将导致
    NaN
    。编辑:点是逗号…这让我心碎。你可以,但1)它也不会返回
    [1,2,3]
    ,2)与问题无关。它与Math.max有关,他需要知道!