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

为何在JavaScript中[undefined]-3等于-3,而undefined-3却为NaN?

为什么undefined - x返回NaN,而[undefined] - x返回-x?

1. 解析undefined - 3的结果

JavaScript的减法运算会自动将非数字操作数转为数字类型:

  • undefined作为原始值,调用Number(undefined)得到的结果是NaN。
  • 而NaN和任何数值运算的结果始终是NaN,因此undefined - 3最终返回NaN。

2. 解析[undefined] - 3的结果

数组属于对象类型,在减法运算中会触发对象转原始值的流程:

  • 先调用数组的valueOf()方法,返回数组本身(仍是对象),转换未完成。
  • 接着调用toString()方法,[undefined].toString()会把数组元素转为字符串拼接,其中undefined转字符串是空值,最终得到空字符串""。
  • 空字符串通过Number("")转为数字0,执行0 - 3后结果就是-3。

代码验证

console.log(undefined-3);  //NaN
console.log([undefined]-3); // -3
// 中间步骤验证:
console.log(Number(undefined)); // NaN
console.log([undefined].toString()); // ""
console.log(Number("")); // 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:15:44