利用 ES11 新增 nullish coalescing 给你的代码加点精致的语法糖

阅读时长 6 分钟读完

ES11 在 2020 年正式发布,并带来了很多有意思的新特性。其中,nullish coalescing (null 合并运算符) 在 JavaScript 领域中备受关注,它能够为我们的代码添加一些精致的语法糖。本篇文章将会详细介绍 nullish coalescing 的定义、使用方式、示例和优点,希望能够给读者带来深入的学习和指导意义。

什么是 nullish coalescing?

首先,我们需要了解 nullish coalescing 的定义。在 JavaScript 中,当我们需要检测一个变量是否为 null 或 undefined 时,常用的方式是通过 || 运算符进行判断。例如:

在这段代码中,当变量 foo 的值为 null 时,通过 || 运算符的短路特性,'default' 会被赋给 foo。同样地,当变量 bar 的值为 undefined 时,也会赋上默认值。这是一个非常常见的逻辑。

然而,|| 运算符的行为可能会带来一些副作用。当变量的值为 false、0 或空字符串('')时,它们也会被视为“假值”,进而赋上默认值。这个行为常常不被预期。

为了解决这个问题,nullish coalescing 运算符 ?? 被提出。与 || 运算符不同,它只会在变量的值为 null 或 undefined 时才进行默认赋值。其他“假值”将被认为不是 null 或 undefined。例如:

如何使用 nullish coalescing?

现在,我们已经大致地了解了 nullish coalescing 运算符的定义和行为。那么,它如何应用到我们的代码中呢?

使用 nullish coalescing 运算符非常简单。只需要在可能出现 null 或 undefined 的变量后面加上 ?? 运算符,然后在后面紧跟默认值即可。例如:

可以看出,我们在上面的代码中使用了 nullish coalescing 运算符来为两个变量赋上默认值。当 user 对象中的 name 属性为非 null 或 undefined 值时,默认值会被忽略。

示例

让我们进一步探讨 nullish coalescing 的用法。在下面的示例中,我们将使用 ES2020 的 nullish coalescing 和 optional chaining 运算符来获取嵌套对象中的属性。

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

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

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

这里,我们首先使用 optional chaining 运算符 ?. 来检查嵌套对象中的属性是否存在。如果属性存在,它会返回属性的值。如果不存在,则返回 undefined。

接着,我们通过 nullish coalescing 运算符 ?? 给变量赋上默认值。例如,当 user 对象中的 email 属性为 null 或 undefined 时,给它赋上默认值 'Unknown'。同样的,当 user 对象中的 address 属性不存在或者 address 对象中的 street 属性为 null 或 undefined 时,都会给它们赋上默认值 'Unknown'。

nullish coalescing 的优点

nullish coalescing 运算符的出现,使得我们在给变量赋默认值时更加精确,不会受到“假值”的限制。它可以帮助我们写出更加清晰和简洁的代码。此外,与其他语言类似,nullish coalescing 运算符也可以用于判断函数参数是否存在并给它们默认值。例如:

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

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

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

可以看出,当函数的参数没有被传递时,它们的值将会是 null 或 undefined。使用 nullish coalescing 运算符,我们可以为这些变量添加默认值,并让整个函数更加健壮。

总结

在本篇文章中,我们了解了 nullish coalescing 运算符的定义、使用方式和示例,以及它带来的优点。nullish coalescing 是 ES11 中一个有用的新特性,可以帮助我们编写更加精致和健壮的代码。尽管它的使用场景可能比较有限,但了解并掌握这个运算符仍然是我们编写 JavaScript 代码的必要技能。

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

纠错
反馈