推荐答案
typeof null 的结果是 "object"。
判断一个变量是否为 null,可以使用严格相等运算符 ===:
let myVar = null;
if (myVar === null) {
console.log("myVar is null");
}本题详细解读
typeof null 的结果
typeof 是 JavaScript 中的一个运算符,用于返回一个值的类型字符串。虽然 null 代表“空值”,但使用 typeof 操作符时,它返回 "object"。这是一个 JavaScript 的历史遗留问题,也是一个常见的坑。
原因:
在 JavaScript 的早期版本中,值以 32 位字存储。前三个位表示值的类型标签,而剩余的位存储实际的值。null 的表示方式的所有位都是 0,这在当时被视为表示对象的标签 000。尽管 null 不是一个对象,但它的 typeof 行为依然保留了下来,出于历史原因没有被修复。
判断变量是否为 null
使用严格相等运算符 ( === )
判断一个变量是否为 null 的最可靠和推荐的方法是使用严格相等运算符 ===。 === 不仅会比较值是否相等,还会比较类型是否相等。
// www.javascriptcn.com code example
let myVar = null;
if (myVar === null) {
console.log("myVar is null"); // 这将执行
}
if (myVar == null) {
console.log("myVar is null"); // 也会执行,但不推荐
}避免使用相等运算符 ( == )
虽然 myVar == null 也能判断 myVar 是否为 null,但不建议使用。因为 == 会进行隐式类型转换,这会导致 null == undefined 返回 true。如果你想只判断是否为 null,而不是 null 或 undefined,那么应该使用 ===。
let myVar = undefined;
if (myVar == null) {
console.log("myVar is null or undefined"); // 这会执行, 但不是预期
}
if(myVar === null) {
console.log("myVar is null");// 不会执行
}总结:
使用 === null 可以确保你只检测到 null 值,而不会意外地将 undefined 也包含在内。这是判断 null 的最佳实践。