ECMAScript 2018,又称 ES9.0,是 JavaScript 语言的一个新版本,于 2018 年 6 月正式发布。本文将对 ES9.0 中的新特性进行详细介绍和解释,并提供相应的示例代码和学习指导。
Promise.prototype.finally()
Promise.prototype.finally() 是 Promise 对象的一个新方法,它总是会在 Promise 完成之前被调用,并且不管 Promise 成功或者失败都会执行。这个方法相比于 Promise.prototype.then() 方法更有用,因为它不需要额外传递处理成功或者失败的回调函数。
下面是一个简单的示例:
-------- -------------- - ------ ---------- -------------- -- - -- -------------- - ----- --- ----------- ------ ------- --------------------- - ------ ---------------- -- ------------ -- - ------------------ ------- ----------- -- ----------- -- - ------------------ ------------- --- - ------------------------------------------ ---------- -- - ------------------ ---
在上面的代码中,Promise.finally() 方法的作用是打印日志,无论 fetchJSON 方法的结果是成功或者失败。
Rest/Spread 属性
ES9.0 引入了 Rest/Spread 属性语法,用于扩展现有对象或数组的属性。
下面是一个简单的示例:
----- ------ - - ----- ------- ---- -- -- ----- ------- - - ----- ---- ------ -------- ----- -- ----- -------------- - ----------- ------------ ---------------------------- -- ------- ------ ------- ---- --- ----- ---- ------ -------- ------
在上面的代码中,使用 Rest/Spread 属性语法将两个对象 person
和 address
合并到了一个新的对象 completePerson
中。
正则表达式的命名捕获组
ES9.0 支持给正则表达式的捕获组定义名称,并且可以通过名称访问对应的值。这个特性可以让正则表达式的代码更加可读和易于维护。
下面是一个简单的示例:
----- --- - --------------- ----- ----- - ------------------------ ----- ----- - ----------------- ----- --------- - ---------------- ----------------------- -- ------- -----
在上面的代码中,我们通过给正则表达式的捕获组定义名称 <id>
,然后通过名称访问捕获到的值。
Async Iteration
ES9.0 引入了 Async Iteration,让开发者可以更方便地使用异步迭代器进行遍历和处理数据。使用 Async Iteration,开发者可以等待异步操作结果返回之后再进行下一步的操作。
下面是一个简单的示例:
----- -------- ---------------- - ----- ------------------- ----- ------------------- ----- ------------------- - ----- -------- ----------------- - --- ----- ------ ----- -- ----------------- - ------------------- - - ------------------ -- ------- -- -- -
在上面的代码中,我们使用了异步生成器函数 asyncGenerator()
生成了一个异步迭代器,然后使用 for await
循环异步遍历了这个迭代器中的值。
其他变化
除了以上提到的新特性之外,ES9.0 中还有一些其他的变化,比如:
Object.values()
和Object.entries()
方法:分别返回对象的所有值和键值对。String.prototype.trimStart()
和String.prototype.trimEnd()
方法:分别用于清除字符串开头和结尾的空格。- 异步函数的
try...catch
语法支持:在异步函数中可以使用try...catch
来捕获异步操作中的错误。
结论
ES9.0 引入的新特性和改进让 JavaScript 语言更加强大和灵活,让开发者们可以更方便地开发高效、可读和易于维护的代码。我们建议开发者们及时学习和掌握这些新特性,以便更好地提高自己的编码能力和代码品质。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670b5b18d91dce0dc889b8ab