JavaScript 中的 null
在 JavaScript 中, null
是表示有意不存在任何对象值的值。 它在技术上是一种原始类型,尽管在某些情况下它表现为一个对象。 这是你需要知道的 null
:
检查 null
你可以检查一个值是否是 null
使用 ===
操作符 :
if (v === null) {
// Handle `null` case here
}
您可能还会看到 == null
。使用双等号 null
是 检查值是否为空或未定义 (所谓的 空值 )的简写。
v == null;
// Equivalent:
v === null || v === undefined;
相对 undefined
JavaScript 语言规范明确定义 null
作为表示有意不存在任何对象值的值 。 和...之间的不同 null
和 undefined
是一些混乱的根源。 主要区别纯粹是语义上的: undefined
意味着变量还没有被赋值 ,而 null
表示变量已明确定义为 null
。
出于最实际的目的, null
和 undefined
作为仅有的两个无效值,通常可以互换。 Nullish 值与非 Nullish 值的不同之处在于 Nullish 值抛出 TypeError
当您尝试访问它们的其中一个属性时,而非空值则不会。
let v = 42;
v.test; // undefined
v = null;
v.test; // Throws `TypeError: Cannot read property 'test' of null`
v = undefined;
v.test; // Throws `TypeError: Cannot read property 'test' of undefined`
在大多数情况下,作为 JavaScript 开发人员,您会遇到, null
和 undefined
实际上是可以互换的。 例如,如果您使用 MongoDB 和 Mongoose ,则 Mongoose 存储 undefined
值作为 null
。
但是,两者之间存在一些细微差别 null
和 undefined
使用算术运算符和 typeof
操作符。
使用算术运算符
为了算术运算的目的, null
表现得像 0
. 如果你加、减、乘、除或取幂 null
,JavaScript 转换 null
至 0
。
2 + null; // 2
null + 2; // 2
2 - null; // 2
null - 2; // -2
2 * null; // 0
null * 2; // 0
2 ** null; // 1
0 ** 2; // 0
null / 2; // 0
这与 undefined
,这会导致所有算术运算的结果为 NaN :
2 + undefined; // NaN
2 * undefined; // NaN
2 - undefined; // NaN
2 ** undefined; // NaN
和 typeof
烦人的怪癖之一 null
是那个 typeof
操作符 报告的类型 null
是 对象:
typeof null; // 'object'
这种行为是有历史原因的 ,但仍然会引起混乱。 为了检查一个值是否是一个对象并且你可以无误地访问它的属性,你需要一个两步检查:
function isObject(v) {
return typeof v === 'object' && v !== null;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论