原文: JS Check for Null – Null Checking in JavaScript Explained
null 是 JavaScript 中的一个原始类型。这意味着你应该能够用 typeof()
方法来检查一个变量是否为 null
。但不幸的是,由于一个无法修复的历史错误,这个方法返回的是 “object”。
let userName = null;
console.log(typeof(userName)); // object
那么,你现在如何检查 null 呢?本文将教你如何检查 null,以及 JavaScript 类型 null 和 undefined 的区别。
JavaScript 中的 null 与 undefined
在 JavaScript 中,null 和 undefined 是非常相似的,都是原始类型。
如果一个变量包含 null
值,它的类型就是 null
。相反,当你声明一个变量而没有初始化一个值时,它的类型是 undefined
。
// 这是 null
let firstName = null;
// 这是 undefined
let lastName;
undefined 的效果很好,因为当你使用 typeof()
方法检查类型时,它将返回 undefined
:
let lastName;
console.log(typeof(lastName)); // undefined
现在让我们看看检查 null
的两种主要方式,以及它与 undefined
的关系。
如何在 JavaScript 中用相等运算符检查 null
相等运算符提供了检查 null
的最好方法。你可以使用宽松/两个相等运算符(==
)或严格/三个相等运算符(===
)。
如何使用宽松相等运算符来检查 null
你可以使用宽松相等运算符来检查 null
值:
let firstName = null;
console.log(firstName == null); // true
但是,这可能有点问题,因为如果变量是未定义的,它也会返回 true
,因为 null
和 undefined
都是宽松相等。
let firstName = null;
let lastName;
console.log(firstName == null); // true
console.log(lastName == null); // true
console.log(firstName == undefined); // true
console.log(lastName == undefined); // true
console.log(firstName == lastName); // true
console.log(null == undefined); // true
注意:当你想检查一个变量是否没有值时,这可能很有用,因为当一个变量没有值时,它可能是 null
或 undefined
。
但是,如果你只想检查 null
- 那么你可以使用严格相等运算符。
如何使用严格相等运算符来检查 null
与宽松相等运算符相比,严格相等运算符只有在你正好有一个 null
值时才会返回 true
。否则,它将返回 false
(这包括 undefined
)。
let firstName = null;
let lastName;
console.log(firstName === null); // true
console.log(lastName === null); // false
console.log(firstName === undefined); // false
console.log(lastName === undefined); // true
console.log(firstName === lastName); // false
console.log(null === undefined); // false
正如你所看到的,只有当空变量与 null
比较时,以及未定义变量与 undefined
比较时,返回 true
。
如何用 Object.is() 方法检查 JavaScript 中的 null
Object.is()
是一个 ES6 方法,用于确定两个值是否相同。它的原理类似于严格相等运算符。
// 语法
Object.is(value1, value2)
让我们利用前面的例子,看看它是否像严格相等运算符那样工作:
let firstName = null;
let lastName;
console.log(Object.is(firstName, null)); // true
console.log(Object.is(lastName, null)); // false
console.log(Object.is(firstName, undefined)); // false
console.log(Object.is(lastName, undefined)); // true
console.log(Object.is(firstName, lastName)); // false
console.log(Object.is(null, undefined)); // false
发生这种情况是因为它只在两个值相同时返回 true
。这意味着只有当设置为 null
的变量与 null
比较时,以及未定义的变量与 undefined
比较时,它才会返回 true
。
总结
现在你知道如何检查 null 了。你还可以检查一个变量是否被设置为 null
或 undefined
,你也知道了宽松和严格相等运算符之间的区别。
我希望这篇文章对你有帮助,happy coding!