JavaScript 中的 null

发布于 2022-11-20 21:37:53 字数 3215 浏览 117 评论 0

在 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

出于最实际的目的, nullundefined作为仅有的两个无效值,通常可以互换。 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 开发人员,您会遇到, nullundefined实际上是可以互换的。 例如,如果您使用 MongoDB 和 Mongoose ,则 Mongoose 存储 undefined值作为 null

但是,两者之间存在一些细微差别 nullundefined使用算术运算符和 typeof 操作符。

使用算术运算符

为了算术运算的目的, null表现得像 0. 如果你加、减、乘、除或取幂 null,JavaScript 转换 null0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

蘑菇王子

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文