1. 异步迭代器(Async Iterators)
ES9 引入了一种新的迭代器类型:异步迭代器。这些迭代器可以用于处理异步数据流,如数据流或 WebSockets 数据流。异步迭代器使用 Symbol.asyncIterator
作为其键名,其迭代器接口包含一个异步 next
函数。当这个函数执行时,它返回一个 Promise 对象,解析为一个包含 value
和 done
属性的对象。下面是一个异步迭代器的示例:
----- ------ - ---------------------- ----- ------------- - - ------------------------ - ------ - -- -- ----- ------ - -- -------------------------- - ------ - ------ --------------------------- ----- ----- -- - ---- - ----- --------------------- ------ ------------ - - -- - -- --- ----- ------ ----- -- -------------- - ------------------- -
2. Promise.prototype.finally
Promise.prototype.finally 允许您在 Promise 执行结束时,无论是 resolved 还是 rejected,执行一段代码。代码示例:
--- - -- ---- ---- - ----- ------- - -- ------ ----- - ------- - -- ------- ---- -
3. Rest/Spread 属性
ES9 允许我们在对象字面量中使用 Rest/Spread 属性。Rest 属性可以让您捕获未匹配的对象属性,而 Spread 属性可以让您展开一个对象,以便它的属性可以分别分配给其他变量。示例代码:
----- ------ - - ----- ------- ---- --- -------- - ----- ---- ------ ------ ---- - -- ----- - ----- ------- - - ------- -- ---- - - ---- --- -------- - ----- ---- ------ ------ ---- - - ----- --------- - - ---------- ----- ------ -- -- --------- - - ----- ------- ---- --- -------- - ----- ---- ------ ------ ---- - -
4. 正则表达式的命名捕获组
ES9 可以使用命名捕获组来匹配命名字符串。命名捕获组可以提高代码可读性和可维护性。示例代码:
----- ----- - ----------------------------------------------- ----- ---- - ------------------------- ------------------------------ -- ---- ------------------------------- -- -- ----------------------------- -- --
5. 将顶级 await 纳入 ECMAScript 标准
ES9 将顶级 await 纳入 ECMAScript 标准。顶级 await 允许您在模块的顶部等待 Promise 对象。示例代码:
----- ---- - ----- ------------ -- ----------- ---- ------- -- ------------------
6. 高效的对象属性描述符
ES9 引入了 Object.fromEntries()
方法,该方法允许我们将数组转换为对象。数组的每个元素应该是一个由键值对组成的数组。示例代码:
----- --- - - ------ --- -------- -------- ------- --- -- ----- --- - ------------------------ -- --- - - --- -- ----- ------- ---- -- -
7. 改进的 JSON.stringify()
如果您尝试调用 JSON.stringify() 来序列化一个对象,该对象包含循环引用,您会得到一个错误。ES9 引入了一个新的可选参数,可以解决这个问题。该嵌套选项告诉 JSON.stringify() 序列化由 circula 引用构成的对象时应如何处理它们。示例代码:
----- --- - --- ----- - ---- -------------------- -- -- --------- -- ------------------- ----- --- -- -------- ---------- ---------- -------- --------- -- ---- ------------------- ----- ------ -- - -- ---- --- --- - -- ------ ------ ------ - -- ------ --- ---- - -- ---- ------ ------------- - ------ ------ -- --- -- ---- ------ ------------------
8. 非捕获性断言
非捕获性断言是一个模式,用于与模式相匹配,但不在返回数组中返回。该模式用括号包括。示例代码:
----- ----- - --------------- ---------------------------------- -- ----------
结论
以上就是 ES9 的 8 个重要更新。这些更新为开发人员提供了更多的功能和工具,帮助我们更有效地编写和维护代码。如果您希望尝试这些新功能,可以使用 Babel 进行转译。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6715c73aad1e889fe218dee8