ES11 带来的小改进以及 ES11 中的新 API

阅读时长 5 分钟读完

ES11 是 ECMAScript 的最新版本,它带来了一些小但有用的改进以及全新的 API,这些功能可以提高我们做前端开发的效率和人生体验。在本文中,我们将探索 ES11 的新功能,并提供一些指导和示例的代码。

1. Optional Chaining

Optional Chaining 是 ES11 引入的最有用的特性之一。它允许我们在访问一个对象的嵌套属性时,不需要检查每个嵌套属性是否存在。如果嵌套属性不存在,它会返回 undefined,而不会抛出错误。

以前,我们需要使用繁琐的短路表达式来处理嵌套属性,或者使用 try-catch 语句来捕捉异常。现在,我们可以使用 Optional Chaining 进行更简洁的写法。

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

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

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

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

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

2. Nullish Coalescing Operator

Nullish Coalescing Operator 是一个类似于 Optional Chaining 的特性,它帮助我们定义一个默认值当值为 nullundefined 时返回一个备用值。

以前,我们通常使用短路表达式来处理变量的默认值,但它无法处理值为 false0 的情况。现在,使用 Nullish Coalescing Operator 可以处理所有情况。

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

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

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

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

3. Promise.allSettled()

Promise.allSettled() 方法返回一个 Promise,当所有 Promise 参数都已经执行时,resolve,无论它们是成功的还是失败的,结果都是一个遵循 PromiseStatusObject 规范的数组。

这个新的 Promise 对象无论原始 Promise 完成情况如何,它们总是解析为成功状态。Promise.all() 的返回值会在所有 Promise 对象完成后,以它们完成的顺序将其解析为一个序列。

结果为以下数组:

4. globalThis

globalThis 是一个新的全局对象,代表了全局的 this。在浏览器中,globalThis 是 window 对象,而在 Node.js 中,它是 global 。globalThis 能够让我们更容易地在不同的 JavaScript 执行上下文中编写可移植的代码,而不关心它们的环境。

结论

ES11 带来了许多新特性和用于提高 JavaScript 开发效率的功能。Optional Chaining 和 Nullish Coalescing Operator 解决了一些常见的问题,Promise.allSettled() 允许我们更容易地并行处理多个 Promise,而 globalThis 确保我们编写的代码能够在所有执行上下文中正确运行。

我们鼓励所有开发人员学习这些新的功能,并开始在自己的代码中使用它。ES11 的新特性绝对可以帮助你更好地编写 JavaScript 代码。

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

纠错
反馈