ES9 中的可选链式运算符和 Nullish Coalescing 运算符详解

阅读时长 4 分钟读完

在前端开发中,经常需要处理对象或数组中的数据。在 JavaScript 中,访问对象中的某个属性或数组中的某个元素时,如果该属性或元素不存在,就会返回 undefined,如果继续使用这个值进行操作,很容易导致错误。ES9 提供了可选链式运算符和 Nullish Coalescing 运算符来解决这个问题。

可选链式运算符

JavaScript 中访问对象属性或数组元素的方式通常是通过点符号或方括号,例如:

当属性 address 不存在时,尝试访问 addresscity 属性就会返回 TypeError。为了避免这种情况,可以使用可选链式运算符 ?.

当属性 address 不存在时,访问 ?. 后面的属性将会返回 undefined,而不会导致错误。

可选链式运算符可以链式使用,例如:

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

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

当对象的一层或多层属性不存在时,使用可选链式运算符将更加简单和安全。

Nullish Coalescing 运算符

在 JavaScript 中,当某个变量的值为 undefinednull 时,可以使用逻辑或运算符 || 返回一个默认值。例如:

value 为假值时(包括 undefinednull),返回 "default"

然而,当 value 的值为 ''0 时,逻辑或运算符也会返回默认值,这不符合预期。

为了解决这个问题,ES9 引入了 Nullish Coalescing 运算符 ??,只有在变量值为 nullundefined 时才返回默认值。例如:

value''0 时,不会返回默认值。

示例代码

下面是一个使用可选链式运算符和 Nullish Coalescing 运算符的示例:

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

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

zip 为空字符串时,zipCode 将会返回 "unknown",而当 city 不存在时,cityName 将会返回 "unknown"

除了对象属性和数组元素外,可选链式运算符也可以用于函数调用:

当对象 obj 存在且具有 fn 方法时,返回 fn(param) 的结果,否则返回 undefined

Nullish Coalescing 运算符也可以用于默认参数的赋值:

ab 的值为 0 时,result 将会返回 "unknown"

结论

可选链式运算符和 Nullish Coalescing 运算符是 ES9 中非常有用的新特性,可以帮助我们更加方便和安全地处理对象和数组中的数据。使用这两个运算符可以避免访问不存在的属性或变量,从而避免因此导致的代码错误。在日常开发中,推荐使用这两个运算符来提高代码的可读性和可靠性。

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

纠错
反馈