ES2020 特性的简单示例

2025-05-24

ES2020 特性的简单示例

在本系列中,我们将展示从 2015 年至今的 EcmaScript 特性。


介绍

ES2020 是 ECMAScript 对应 2020 年的版本。此版本包含的新功能不如 ES6(2015 年)那么多,但也包含了一些实用的功能。

本文通过简单的代码示例介绍了 ES2020 提供的功能。这样,您无需复杂的解释即可快速理解这些新功能。

当然,需要具备 JavaScript 的基础知识才能完全理解所介绍的最佳内容。

ES2020中的#JavaScript功能包括:

➡️ String.prototype.matchAll
➡️ import()
➡️ BigInt
➡️ Promise.allSettled
➡️ globalThis
➡️ for-in 机制
➡️ 可选链式调用
➡️ 空值合并运算符

String.protype.matchAll

matchAll() 方法返回一个迭代器,其中包含与正则表达式匹配的所有结果,包括捕获组。

动态导入

动态 import() 会返回一个用于请求模块的模块命名空间对象的 promise。因此,现在可以使用 async/await 将导入内容赋值给变量。

BigInt — 任意精度整数

BigInt 是第七种原始类型,它是一个任意精度的整数。变量现在可以表示 ²⁵³ 个数字,而不仅仅是最大值 9007199254740992。

Promise.allSettled

Promise.allSettled 返回一个承诺,该承诺通过一系列承诺状态快照来实现,但只有在所有原始承诺都已解决(即,已实现或已拒绝)之后才会实现。

如果承诺没有悬而未决,即它被履行或被拒绝,我们就说它已经确定。

标准化的 globalThis 对象

在 ES10 之前,全局变量 this 并没有标准化。
在生产代码中,你只能自己写这么一个怪异的代码来跨平台“标准化”它:

for-in 机制

ECMA-262 对 for (a in b)... 的顺序几乎完全没有指定,但实际引擎至少在某些情况下往往是一致的。

历史上,为就 for-in 顺序的完整规范达成共识所做的努力屡屡失败,部分原因是所有引擎都有自己独特的实现,这些实现是大量工作的结果,而它们并不真正想重新审视。

总之,不同的引擎已经就使用 for (a in b) 控制结构时如何迭代属性达成了一致,从而使行为标准化。

空值合并运算符

执行属性访问时,如果结果为nullundefined ,通常需要提供默认值。目前,在 JavaScript 中表达此意图的典型方式是使用 || 运算符。

这对于常见的 null 和 undefined 值的情况很有效,但有许多 falsy 值可能会产生令人惊讶的结果。

空值合并运算符旨在更好地处理这些情况,并用作对空值(null 或 undefined)的相等性检查。如果 ?? 运算符左侧的表达式计算结果为undefined 或 null,则返回其右侧。

可选链式调用

当寻找树状结构深处的属性值时,通常必须检查是否存在中间节点。

可选链接运算符允许处理许多此类情况,而无需重复自身和/或在临时变量中分配中间结果。

此外,许多 API 要么返回对象,要么返回 null / undefined,并且只有当结果不为 null 时,人们才可能希望从结果中提取属性:

当缺失情况需要未定义以外的其他值时,通常可以使用Nullish 合并运算符来处理:

结论

JavaScript 是一门充满活力的语言,这对于 Web 开发来说意义非凡。自 2015 年 ES6 发布以来,我们见证了这门语言的蓬勃发展。在本文中,我们回顾了ES2020中的新功能。

尽管其中的许多功能对于 Web 应用程序的开发来说可能并非必不可少,但它们提供了以前需要使用技巧或冗长代码才能实现的可能性。

文章来源:https://dev.to/carlillo/es2020-features-in-simple-examples-1513
PREV
如何通过 7 个步骤成为一名 Web 开发者 - 学习什么?从哪里开始?简介 1. 耐心 2. HTML 3. CSS 4. JavaScript 5. 停下来,开始练习!6. 数据库 - MySQL/PostgreSQL 7. 后端 - PHP/NodeJS/JAVA 补充:框架 结论
NEXT
想成为顶尖开发者吗?你必须开发应用!——7 款值得开发的应用