undefined参与数学运算结果几乎总是nan,但加法(+)例外:若任一操作数为字符串,则转为字符串拼接,如5+undefined→"5undefined";其他运算符(−、、/、%、*)均返回nan;null则转为0参与数值运算。

undefined 参与数学运算时,结果几乎总是 NaN(Not a Number),但有一个关键例外:加法(+)运算符的行为不同。
加法(+):可能触发字符串拼接
当 undefined 与数字使用 + 运算符时,JavaScript 会先尝试将其转为字符串,再进行拼接,而不是数值相加:
-
5 + undefined→"5undefined"(不是 NaN) -
"hello" + undefined→"helloundefined" - 注意:只要其中一个操作数是字符串,+ 就按字符串拼接处理
其他数学运算符(−、*、/、%、**):一律返回 NaN
减法、乘法、除法、取余、幂运算等都会将 undefined 强制转为数值,而 undefined 转数值的结果是 NaN,因此整个表达式结果为 NaN:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
10 - undefined→NaN -
3 * undefined→NaN -
undefined / 2→NaN -
7 % undefined→NaN
为什么不是报错而是 NaN?
JavaScript 的设计选择是让类型错误“静默失败”而非中断执行。NaN 是一种合法的 number 类型值(typeof NaN === 'number'),它代表计算无效,且具有传染性——任何含 NaN 的数学运算结果仍是 NaN:
-
NaN + 5→NaN -
Math.sqrt(undefined)→NaN
对比 null:关键差异点
null 在数值运算中会被转为 0,行为稳定:
-
5 + null→5 -
10 * null→0 -
undefined + null→"undefinednull"(+ 拼接字符串)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










