ECMAScript 2020 (ES11) 新特性

随着前端技术的不断发展,ECMAScript 2020 (ES11) 新特性已经发布,其中包含了一些非常实用的新特性,本文将介绍其中的三个:nullish coalescing、Optional Chaining和Promise.allSettled。

Nullish Coalescing

在 JavaScript 中,我们经常使用 || 运算符来进行默认值的设置,例如:

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

但是,如果 person.name 的值为 false、0、''、null、undefined 或者 NaN,那么上述代码将会返回 'Unknown',这并不是我们想要的结果。

为了解决这个问题,ES11 引入了 nullish coalescing 运算符 ??,它只在左侧的操作数为 null 或 undefined 时才会返回右侧的操作数,例如:

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

这样,当 person.name 的值为 false、0、'' 或者 NaN 时,name 的值将为 person.name 的值。

Optional Chaining

在 JavaScript 中,当我们需要访问一个对象的属性时,我们通常会使用点运算符 .,例如:

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

但是,如果 person 对象不存在,那么上述代码将会抛出错误。

为了解决这个问题,ES11 引入了 Optional Chaining 运算符 ?.,它可以在访问对象属性时避免抛出错误,例如:

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

这样,当 person 对象不存在时,name 的值将为 undefined。

Promise.allSettled

在 JavaScript 中,Promise.all 可以用来等待多个 Promise 对象的完成,例如:

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

但是,如果其中一个 Promise 对象发生了错误,Promise.all 将会抛出错误并停止执行。

为了解决这个问题,ES11 引入了 Promise.allSettled,它可以等待所有 Promise 对象的状态都被 resolved 或者 rejected,并返回一个包含所有 Promise 对象的状态的数组,例如:

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

这样,即使其中一个 Promise 对象发生了错误,Promise.allSettled 也会等待所有 Promise 对象的完成,并返回一个包含所有 Promise 对象的状态的数组。

总结

以上是 ECMAScript 2020 (ES11) 中的三个新特性:nullish coalescing、Optional Chaining 和 Promise.allSettled。它们都非常实用,可以帮助我们更好地编写 JavaScript 代码。

在实际开发中,我们应该根据具体情况选择使用哪一个新特性,并且应该注意它们的兼容性问题,以确保代码能够在各种浏览器和环境中正常运行。

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