null参与数学运算时被转为0,因为Number(null)规范定义为0;而undefined转为NaN,加法遇字符串则转"null";建议显式转换或用??提供默认值。

JavaScript 中 null 参与数学运算时,会先被隐式转换为数字 0,然后再参与计算。
为什么是 0?
这是因为 JavaScript 在做算术运算(如 +、-、*、/、%)时,会尝试把操作数转为数字类型。而根据规范,Number(null) 的结果就是 0:
-
null + 1→0 + 1→ 1 -
null - 5→0 - 5→ -5 -
null * 10→0 * 10→ 0 -
null / 2→0 / 2→ 0 -
null % 3→0 % 3→ 0
注意:加法(+)的特殊情况
当 + 用于字符串拼接时,行为不同——如果一边是字符串,null 会被转成字符串 "null":
-
null + 1→ 数值运算 → 1 -
null + "1"→ 字符串拼接 → "null1" -
"" + null→ "null"
和 undefined 的区别
undefined 转数字是 NaN,所以参与算术运算通常得到 NaN:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
undefined + 1→NaN + 1→ NaN -
undefined * 5→ NaN
实际建议
避免依赖隐式转换,尤其在关键计算中:
- 用
??或||提供默认值(如value ?? 0) - 显式转换:
Number(value)或parseInt(value) - 校验类型,必要时抛错或提示
不复杂但容易忽略,理解这个转换规则能帮你少踩不少坑。

















