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

为何`null + 1 = 1`而`undefined + 1 = NaN`?二者结果为何不同?

为什么null + 1是1,而undefined + 1是NaN?

嘿,这个问题问得特别好!刚开始啃JavaScript隐式类型转换的时候,真的很容易被这俩相似的“空值”搞晕😅。其实核心原因在于JS对null和undefined的数字类型转换规则完全不同,咱们一步步拆解:

  • 首先,JS里的加法运算(+)会先把两个操作数转换成原始值(ToPrimitive),如果转换后不是字符串,就会进一步转换成数字再计算。
  • 对于null:当它被转换为数字时,规则明确规定会变成0。你可以直接在控制台验证:Number(null)的结果就是0,所以null + 1等价于0 + 1,自然得到1。
  • 对于undefined:它的数字转换规则是返回NaN(Not a Number)。同样验证一下:Number(undefined)会输出NaN。而NaN和任何值做运算结果都是NaN,所以undefined + 1就得到NaN了。

说个额外的小背景:null代表的是“一个存在但为空的值”,比如你声明了一个变量用来存数字,但暂时没内容,用null表示空的数字位置,转成0符合逻辑;而undefined是“压根没定义的值”,连存在的位置都没有,所以转成NaN来表示“无效数字”更合理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:45:32