You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何此简单Math.max()示例返回NaN?按MDN文档我能否传入数组?

为什么直接给Math.max()传数组会返回NaN?

你碰到的这个问题其实是个常见误区——Math.max()本身并不支持直接传入数组作为参数,它的设计是接收零个或多个单独的数值参数。当你直接把数组传进去时,它无法识别数组里的数值,只会把整个数组当作非数值类型的参数处理,结果自然就是NaN了。

下面给你几种正确获取数组中最大值的方法:

  • ES6+扩展运算符(最简洁):
    用...把数组展开成单独的参数传递给Math.max():

    var a = [875, 551];
    console.log( Math.max(...a) ); // 输出 875
    
  • ES6之前的apply方法:
    利用Function.prototype.apply()把数组转换成参数列表:

    var a = [875, 551];
    console.log( Math.max.apply(null, a) ); // 输出 875
    
  • 处理空数组的情况:
    如果数组有可能是空的,要注意Math.max()在没有参数时会返回-Infinity,可以加个默认值处理:

    var a = [];
    console.log( Math.max(...a) || 0 ); // 输出 0,可根据需求修改默认值
    

顺便提一句,Math.max的文档里明确说明了它的参数形式,也给出了这些处理数组的方案,你可以再仔细看看文档里的示例部分。

内容的提问来源于stack exchange,提问作者somebodysomewhere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:38:56