ES11: nullish 合并与 optional chaining

阅读时长 3 分钟读完

随着 JavaScript 语言的不断发展,新的特性也在不断涌现。ES11(2020)中有两个非常实用的特性,分别是 nullish 合并与 optional chaining。本文将介绍这两个特性的详细内容,并提供示例代码,帮助前端开发者更好地理解和运用它们。

nullish 合并(Nullish Coalescing)

nullish 合并运算符(??)是一个比较新的 JavaScript 运算符,它可以帮助我们更好地处理 null 和 undefined 值。在运算时如果左侧的操作数为 undefined 或 null,那么它会返回右侧的操作数;如果左侧的操作数是一个已定义的值,那么它会返回左侧的操作数。

举个例子:

在其中,?? 运算符会检测左侧的操作数是否是 null 或者 undefined,如果是,它会返回右侧的操作数。但是如果左侧的操作数是 0,空字符串或者 false,?? 仍然会返回左侧的操作数值,因为它们在布尔值上下文中被视为 true。

在开发过程中,nullish 合并通常被用来检测或者设置默认值,举个例子:

在上面的代码中,如果 existingUser 的值为 null 或者 undefined,那么它会使用新的对象 { userName, password } 代替。

Optional Chaining

Optional Chaining 运算符(?.)是另外一个非常实用的特性,它允许我们在对象链式访问的时候安全地检查属性或方法是否存在,避免错误抛出以及在多次判断中节约时间。

举个例子:

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

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

在上面的代码中,我们使用了 Optional Chaining 运算符,如果 user.address.city.name 存在,那么它就会返回 cityName,否则会返回 undefined。

Optional Chaining 运算符可以和 nullish 合并运算符(??)结合使用:

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

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

在上面的代码中,如果 cityName 不存在,那么它就会返回 'Unknown' 字符串。

总结

在本文中,我们介绍了 ES11 中的两个新特性 nullish 合并和 optional chaining。它们能够帮助开发者处理 null 和 undefined 值、减少代码中的出错及加速代码运行。在实际开发中,我们可以使用这两个运算符来提高代码的可读性和可维护性。希望这篇文章能够帮助你更好地了解和运用它们。

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

纠错
反馈