null转数值为0、undefined为NaN;布尔上下文中均为false;字符串转换分别为"null"和"undefined";对象转换时均报TypeError,但Object()构造均返回空对象{}。

在 JavaScript 中,null 和 undefined 都表示“空值”,但它们的隐式转换行为不同,容易引发意料之外的结果。理解它们在类型转换中的表现,是写出健壮代码的关键。
数值转换时:null 变成 0,undefined 变成 NaN
当参与算术运算或被强制转为数字时,JavaScript 会按规范进行抽象相等比较前的类型转换:
-
Number(null)→ 0 -
Number(undefined)→ NaN - 因此
null + 1结果是 1,而undefined + 1是 NaN - 类似地,
5 * null得 0,5 * undefined得 NaN
布尔上下文:两者都转为 false
在 if 判断、逻辑运算等布尔环境中,null 和 undefined 都属于“falsy 值”:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
if (null) { }→ 不执行 -
if (undefined) { }→ 不执行 -
!!null === false,!!undefined === false - 注意:这不等于它们相等 ——
null == undefined为 true(抽象相等),但null === undefined为 false(严格相等)
字符串转换:各自转成对应字面量字符串
调用 String() 或隐式转字符串(如拼接)时:
立即学习“Java免费学习笔记(深入)”;
-
String(null)→ "null" -
String(undefined)→ "undefined" - 所以
"value: " + null得 "value: null" - 而
"value: " + undefined得 "value: undefined"
对象转换:null 报错,undefined 转为空对象
当尝试将它们当作对象使用(如访问属性、调用方法)时:
-
null.toString()→ TypeError: Cannot read property 'toString' of null -
undefined.toString()→ TypeError: Cannot read property 'toString' of undefined - 但
Object(null)返回空对象 {},Object(undefined)同样返回 {} - 这是因为在
Object()构造中,两者都被视作“无有效原始值”,于是创建空对象

















