ES12 中如何使用 optional chaining 和 nullish coalescing 操作符简化代码

阅读时长 4 分钟读完

ES12 中如何使用 optional chaining 和 nullish coalescing 操作符简化代码

随着前端技术的不断发展,JavaScript 也在不断更新和优化,ES12(也被称为 ES2021)成为了新一代 JavaScript 版本的标准。本文将介绍 ES12 中的两个新操作符 -- optional chaining 和 nullish coalescing,以及如何使用它们简化代码。

什么是 optional chaining 操作符?

在编写 JavaScript 代码时,我们经常会涉及到访问对象属性的操作。如果对象在某个层次上不存在,使用传统的点号“.”访问属性的代码将会抛出错误:

-- -------------------- ---- -------
----- --- - -
  ---- -
    ---- -
      ---- -
    -
  -
--

----------------------------- -- -- ---------- ------ ---- -------- ----- -- ---------

在这个例子中,我们试图访问 obj.foo.qux.baz,但是由于 qux 根本不存在,代码会抛出一个 TypeError。

这个问题可以通过使用 optional chaining 操作符来解决。optional chaining 操作符是一个问号 ?,用来代替点号 .,表示如果前面的属性不存在,则不会抛出错误,而是返回 undefined:

-- -------------------- ---- -------
----- --- - -
  ---- -
    ---- -
      ---- -
    -
  -
--

------------------------------- -- -- ---------

这个例子中,我们使用 optional chaining 操作符替换了 .,代码不会抛出错误,而是返回了 undefined。

optional chaining 操作符也可以用于数组访问:

在这个例子中,我们试图访问数组中的第 4 个元素,但是由于数组的长度只有 3,代码返回了 undefined。

什么是 nullish coalescing 操作符?

nullish coalescing 操作符是另一个新操作符,它用来简化判断变量是否为 undefined 或 null 的代码。在传统的 JavaScript 中,通常会使用逻辑或 || 运算来判断一个变量是否存在或者为一个 falsy 值(undefined、null、0、""、NaN 等),如下所示:

在这个例子中,变量 foo 是 undefined,所以会返回 'default value'。但是,如果 foo 是一个空字符串 ""、0、null 等 falsy 值时,我们也会返回 'default value',这不是我们想要的结果。

nullish coalescing 操作符(??)用来解决这个问题。如果被判断的变量为 undefined 或 null,就返回其后面的默认值:

在这个例子中,我们使用了 nullish coalescing 操作符,返回了 'default value',而不是逻辑或操作符返回的结果。

如何使用 optional chaining 和 nullish coalescing 操作符?

在开发过程中,我们经常会需要检测一个变量是否为 undefined 或 null,然后才能访问变量的属性或方法。使用 optional chaining 和 nullish coalescing 操作符,代码可以变得更加简洁:

-- -------------------- ---- -------
----- --- - -
  ---- -
    ---- -
      ---- -
    -
  -
--

------------------------------ -- -------- -------- -- -- -

----- --- - --- -- ---

-------------------- -- -------- -------- -- -- -------- ------

在这个例子中,我们使用 optional chaining 和 nullish coalescing 操作符来访问对象和数组,并且在变量不存在或为空时返回了默认值。

总结

ES12 中的 optional chaining 和 nullish coalescing 操作符可以帮助我们简化代码,避免了大量的 if-else 判断和异常处理代码。然而,我们仍然需要谨慎使用它们,并注意其在不同情况下的语义。在实际开发中,我们应该结合实际场景,灵活地选择使用 optional chaining 和 nullish coalescing 操作符。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f15d22f6b2d6eab3b3511d

纠错
反馈