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 在宽松相等 (==) 的情况下是相等的,但在严格相等 (===) 的情况下不相等。