ES11:如何使用 Optional Chaining 和 nullish coalescing 操作符兼容性问题处理

阅读时长 6 分钟读完

在前端开发中,我们经常需要处理各种数据,比如从异步请求中获取的返回值,或者是后端接口返回的数据。但是在处理数据时,我们经常会遇到各种兼容性问题,尤其是在处理 undefined 或者空值的时候。

在 ES11 中,新增了两个新的操作符:Optional Chaining(可选链操作符)和 Nullish Coalescing(空位合并操作符),这两个操作符可以为我们解决一些兼容性问题,并且还能简化代码,提高开发效率。

Optional Chaining

Optional Chaining(可选链操作符)的作用是在对象属性的调用链中,当链条上某个属性不存在时,直接返回 undefined,而不是像传统的访问属性方式那样抛出错误。这个操作符使用问号(?)表示。

示例

假设我们有以下数据:

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

传统的对象属性访问方式:

上面的代码中,我们通过 data.user.job.title 访问 job 对象的 title 属性,并得到了正确的结果。但是当我们访问 job 对象的 description 属性时,由于该属性不存在,会抛出 TypeError 的异常。

现在我们可以使用 Optional Chaining 操作符来解决这个问题:

在这个例子中,我们使用了 Optional Chaining 操作符 ?. 来访问 job 对象的 title 和 description 属性。当 title 存在时,返回正确的结果;当 description 不存在时,返回 undefined,不会抛出异常。

嵌套使用 Optional Chaining

在实际开发中,我们经常需要访问一个对象的深层嵌套属性。这时候就可以使用多个 Optional Chaining 一起使用。

Nullish Coalescing

Nullish Coalescing(空位合并操作符)的作用是在值为 null 或 undefined 时,返回一个默认值。这个操作符使用两个问号(??)表示。

示例

假设我们有以下数据:

在这个例子中,我们使用了逻辑或操作符 ||,当 name 为空字符串时返回 'Anonymous',当 jobTitle 为 null 时返回 'No job'。

但是还有一种情况是,如果 name 或 jobTitle 的值为 0 或者 false,我们希望返回的结果仍然为其本身。这时候就可以使用 Nullish Coalescing 操作符。

在这个例子中,我们使用了 Nullish Coalescing 操作符 ??,当 name 为空字符串时返回空字符串本身,当 jobTitle 为 null 时返回 'No job'。

深层嵌套对象中的使用

Nullish Coalescing 操作符可以在深层嵌套对象中的使用。

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

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

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

兼容性问题

由于 Optional Chaining 和 Nullish Coalescing 是 ES11 中新增的操作符,并不是所有浏览器都支持。如果我们在项目中使用这两个操作符,就会遇到一些兼容性问题。

兼容性处理方案

为了解决兼容性问题,我们可以使用 babel 和 @babel/plugin-proposal-optional-chaining 插件和 @babel/plugin-proposal-nullish-coalescing-operator 插件。这两个插件可以将 ES11 的语法转换成 ES5 或者 ES6 可以执行的代码。

在 babel 配置文件(babel.config.js 或者 .babelrc)中配置:

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

配置完成之后,就可以使用 Optional Chaining 和 Nullish Coalescing 这两个操作符了。

总结

Optional Chaining 和 Nullish Coalescing 是 ES11 中新增的两个操作符,可以为我们解决一些兼容性问题,并且能够简化代码,提高开发效率。在实际开发中,我们可以灵活运用这两个操作符,兼容更多浏览器,提升用户体验。

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

纠错
反馈