JavaScript中的undeclared、undefined和null有什么区别?
undeclared
如果变量没有使用适当的关键字(即var
、let
或const
)声明,那么它就是未声明的。访问未声明的变量会抛出ReferenceError
。
console.log(x); // ReferenceError: x is not defined
undefined
如果变量没有被赋值,那么它的值就是undefined
。undefined
是JavaScript中的原始数据类型,表示值的缺失,无论是有意还是无意。
let x;
console.log(x); // undefined
null
变量可以像其他值一样被赋值为null
。null
也是JavaScript中的原始数据类型,始终表示有意地缺少值。
let x = null;
console.log(x); // null
检查空状态
未声明的变量会抛出错误,这使得它们很容易被发现,而且也不太常见。undefined
和 null
可以通过条件语句很容易地被发现,因为它们都是假值。由于这个原因,null
和 undefined
在宽松相等 (==
) 的情况下是相等的,但在严格相等 (===
) 的情况下不相等。