ES2018 特性及简单示例

2025-06-04

ES2018 特性及简单示例

介绍

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

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

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

ES2018 中的新 #JavaScript 功能包括:

➡️ 解除模板字面量限制。➡️
正则表达式的 s(dotAll)标志。➡️
RegExp 命名捕获组。➡️
Rest/Spread 属性。➡️
RegExp 后向断言。➡️
RegExp Unicode 属性转义。➡️
Promise.prototype.finally。➡️
异步迭代。

解除模板文字限制

建议的解决方案是,对于包含非法转义序列的模板值,将熟值设置为undefined。原始值仍然可以通过.raw访问,因此可能包含未定义熟值的嵌入式 DSL可以直接使用原始字符串:

正则表达式的 s(dotAll)标志

目前,正则表达式中的点 (.) 不匹配行终止符(ES2018 之前的版本)。该提案指定了正则表达式标志 /s。

RegExp 命名捕获组

编号捕获组允许引用正则表达式匹配的字符串的特定部分。每个捕获组都被分配一个唯一的编号,并且可以使用该编号进行引用,但这会使正则表达式难以理解和重构。

可以使用 (?...) 语法为捕获组命名,适用于任何标识符名称。日期的正则表达式可以写为 /(?\d{4})-(?\d{2})-(?\d{2})/u。每个名称都应该是唯一的。

Rest/Spread 属性

ECMAScript 6 引入了用于数组解构赋值的剩余元素和用于数组文字的扩展元素。

此版本引入了用于对象解构赋值的类似剩余属性和用于对象文字的扩展属性。

RegExp 后向断言

后行断言有两个版本:肯定断言否定断言

正向后视断言表示为 (?<=...),它们确保其中包含的模式先于断言后面的模式。

负向后行断言表示为 (?<!...),另一方面,确保其中的模式不位于断言之后的模式之前。

RegExp Unicode 属性转义

JavaScript 允许你通过指定字符集的“名称”来匹配字符。此外,你还可以通过在 \p{} 的大括号内指定字符的 Unicode 字符属性来匹配字符。

该提案解决了上述所有问题:

  • 创建支持 Unicode 的正则表达式不再是痛苦的。

  • 对运行时库没有依赖。

  • 正则表达式模式紧凑且可读——不再增加文件大小。

  • 不再需要创建在构建时生成正则表达式的脚本。

  • 从开发人员的角度来看,使用 Unicode 属性转义的代码会“自动”保持最新:每当 Unicode 标准获得更新时,ECMAScript 引擎就会更新其数据。

Promise.prototype.finally

一旦你的 Promise 以某种方式得到解决,最终回调就会执行逻辑。它对你的 Promise 最终解析的值完全没有影响。

异步迭代

我们引入了 for-of 迭代语句的变体,用于迭代异步可迭代对象。示例用法如下:

结论

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

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

文章来源:https://dev.to/carlillo/es2018-features-with-simple-examples-5eef
PREV
重构:保护条款
NEXT
设计模式 - 模板方法