ECMAScript 2020 概览

阅读时长 4 分钟读完

ECMAScript (ES) 是一种语言标准,它定义了 JavaScript 的语法和语义。每年,ECMA International 都会发布一个新的 ECMAScript 标准,以便我们可以使用新的语言特性来编写更好的 JavaScript 代码。在本文中,我们将讨论 ECMAScript 2020 (ES2020) 的新功能。

一、 Promise.allSettled()

在过去,使用 Promise.all() 来等待多个 Promise 完成并返回结果已经是非常普遍的技术,但其中有一个问题:只要有一个 Promise 被拒绝了,那么整个 Promise.all() 就被拒绝了。 在实际应用中,这可能并不总是我们想要的结果,因为我们可能只是想知道每个 Promise 的结果。在 ES2020 中,我们可以使用 Promise.allSettled(),这个方法将等待所有 Promise 完成,无论结果是成功的还是失败的,然后返回一个对象数组,每个对象都包含 Promise 结果信息。

输出结果:

二、 可选链操作符

在过去,我们经常使用 && 运算符检查一个对象是否为 null 或 undefined。例如,我们可以使用以下代码防止引用一个不存在的对象属性:

但是,这个代码在跨越多个嵌套的属性时就变得非常笨拙和丑陋了。在 ES2020 中,我们可以使用可选链操作符 (?),使代码更加优雅并确保不会引用不存在的值:

这个操作符表示如果 person 对象存在,那么就取名字属性,否则就返回 undefined。使用可选链操作符,我们还可以更好地访问嵌套的属性或方法,例如:

三、 全局对象 globalThis

在浏览器环境中,我们可以使用 window 对象来访问全局作用域。在 Node.js 中,我们可以使用 global 对象来做同样的事情。但是,在某些情况下,我们需要一种跨平台的方案来访问全局对象。在 ES2020 中,我们可以使用 globalThis 对象来解决这个问题。

四、 BigInt

在 JavaScript 中,数字的安全范围已经变得越来越大,已经可以处理很大的整数了。但是,有时候我们可能需要使用更大的数,例如处理密码、哈希或其他加密问题时。在 ES2020 中,我们可以使用 BigInt 类型来表示任意精度的整数。示例:

注意,在声明 BigInt 变量时,一定要在数值后面加上 n 或者使用 BigInt() 函数。否则,这个数值可能会视为普通的 Number 类型。

五、 模块化的动态 import

在过去,我们只能在静态地引入模块。这意味着,当我们调用 import 时,我们必须知道要引入哪个模块。但是,有时候我们需要在运行时根据一些条件选择要引入的模块。在 ES2020 中,我们可以使用动态 import,这使得我们可以在程序运行时动态地引入模块。示例:

这里我们使用了模板字面量来动态构建模块路径。但要注意,动态 import 返回的是一个 Promise,所以我们需要使用 async/await 或者 .then() 进行解决。

结语

以上是 ECMAScript 2020 中的一些主要功能。这些新功能可以帮助开发者写出更加清晰、简洁和高效的代码。希望本篇文章对你有所帮助,也许你可以亲自尝试这些功能来获得更深刻的学习和理解。

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

纠错
反馈

纠错反馈