Skip to content

JavaScript中的undeclared、undefined和null有什么区别?

undeclared

如果变量没有使用适当的关键字(即varletconst)声明,那么它就是未声明的。访问未声明的变量会抛出ReferenceError

console.log(x); // ReferenceError: x is not defined

undefined

如果变量没有被赋值,那么它的值就是undefinedundefined是JavaScript中的原始数据类型,表示值的缺失,无论是有意还是无意。

let x;
console.log(x); // undefined

null

变量可以像其他值一样被赋值为nullnull也是JavaScript中的原始数据类型,始终表示有意地缺少值。

let x = null;
console.log(x); // null

检查空状态

未声明的变量会抛出错误,这使得它们很容易被发现,而且也不太常见。undefinednull 可以通过条件语句很容易地被发现,因为它们都是假值。由于这个原因,nullundefined 在宽松相等 (==) 的情况下是相等的,但在严格相等 (===) 的情况下不相等。