ES2020 新增可选链接和 Nullish 合并运算符

阅读时长 3 分钟读完

在 ES2020 中,新增了两个运算符:可选链(Optional Chaining)和 Nullish 合并运算符(Nullish Coalescing),这两个运算符为我们开发者提供了更好的语言特性,以便我们更好地处理变量和属性。

可选链运算符

可选链运算符可以在不知道变量是否定义的情况下,尝试访问变量的属性,避免了出现 "TypeError: Cannot read property 'xxx' of undefined" 这类的错误。

可选链运算符使用 ?. 表示,在 ?. 左边的变量为 nullundefined 时,表达式会立即停止求值并返回 undefined

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

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

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

Nullish 合并运算符

在开发中,我们经常会遇到变量为空或者为 undefined 时,给变量指定一个默认值。在 ES2020 中,Nullish 合并运算符可以用来判断一个变量是否为空或者为 undefined,若满足条件,则返回左侧的变量,否则返回右侧的默认值。

Nullish 合并运算符使用 ?? 表示,在 ?? 左边的变量为 nullundefined 时,会返回右侧的默认值。

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

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

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

可选链和 Nullish 合并运算符的联合使用

这两个新运算符往往会被一起使用,例如获取深层嵌套的属性时,我们可以使用这两个运算符的组合,避免访问到空值时的报错。

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

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

上述代码中,当 user 对象中某个属性的值为 undefinednull 时,所有 . 后面的表达式都将被短路,并且返回 'unknown'。

总结

通过可选链和 Nullish 合并运算符的组合,我们能够更加便捷的获取变量或者属性的值,同时避免了出现常见的 TypeError 错误。对于编写稳健的代码来说,可选链和 Nullish 合并运算符的使用将会更加有利。

所以在日常工作中,当我们处理对象的属性和变量时,尽量使用可选链和 Nullish 合并运算符,让代码更加优雅可读,同时又能通过语言自身的特性将代码写得更加稳健。

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

纠错
反馈