ES11 的新特性:可选链路径操作符、空值合并运算符

JavaScript 语言的版本更新是前端开发人员需要了解和掌握的重要内容。在 ES11 中,有两个新特性非常有用,分别是可选链路径操作符和空值合并运算符。

可选链路径操作符

在 JavaScript 代码中,我们经常需要访问对象的嵌套属性,但是如果对象中某个属性为 null 或 undefined,会导致代码出现异常:

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

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

在上面的代码中,我们尝试访问 user.address.zipcode 属性,但是由于 address 属性中没有 zipcode 属性,所以会导致出现异常。

使用可选链路径操作符,我们可以更加安全地访问对象的属性,避免代码异常:

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

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

在上面的代码中,我们使用 ?. 运算符访问属性,如果 address 属性为 null 或 undefined,user.address?.zipcode 表达式会直接返回 undefined,而不会产生异常。

注意,可选链路径操作符可以用在对象的多个属性之间,例如:

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

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

在上面的代码中,我们使用了三个可选链路径操作符,代码不会报错。如果任何一个属性为 null 或 undefined,整个表达式都会直接返回 undefined。

空值合并运算符

JavaScript 中常常需要为某些变量设置默认值,我们通常使用 || 运算符实现。例如:

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

在上面的代码中,如果 showMessage 变量为 falsy 值(例如 null、undefined、false、0、'' 等),那么表达式的结果就是 'Hello, world!'。

ES11 新增的空值合并运算符 ?? 是 || 的增强版,它只有在左操作数为 null 或 undefined 时才返回右操作数的值。例如:

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

在上面的代码中,只有当 showMessage 变量为 null 或 undefined 时,message 才会被赋值为 'Hello, world!'。

除了我们常用的字符串默认值外,空值合并运算符还可以配合其他复杂类型的默认值。例如:

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

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

在上面的代码中,user.age 为 null,所以 user.age ?? 18 表达式的结果为 18。

结论

可选链路径操作符和空值合并运算符是 ES11 新增的两个实用特性,能够帮助我们更加优雅地处理对象属性的访问和变量默认值的设置。在实际开发中,合理使用这两个特性可以提高代码的可读性和健壮性。

参考

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6721ffa42e7021665e09d66a