ECMAScript 2018 (或称ES9) 是 ECMA 国际标准组织于2018年6月发布的最新的JavaScript标准。此标准介绍了一些新的语言特性和API,下面将逐一介绍。
Rest/Spread 属性
Rest/Spread 属性是一种使用三个点 (...) 表示的新语法。它可用于函数的定义和调用以及对象字面量和数组字面量。它的作用是可以将对象展开,或者在参数列表中捕获任意多个参数,并将其转换为数组。
对象展开
----- ------ - - ----- -------- ---- -- -- ----- --------- - ----------- -------- ------- ----------------------- -- - ----- -------- ---- --- -------- ----- -
函数参数
-------- ------ -- -------- - --------------- -- - --------------- -- - ------------------ -- --- -- -- - ------ -- -- -- ---
数组字面量
----- ---- - --- -- --- ----- ---- - --- -- --- ----- ---- - --------- --------- ------------------ -- --- -- -- -- -- --
异步迭代
ECMAScript 2018 引入了 for-await-of 循环来处理异步迭代。它通过 await 执行迭代并等待 Promise 完成。这个特性可以帮助我们更方便地处理异步数据流。
----- -------- ----------- - ----- ---- - ----- -------------------------------------- ----- -------- - ----- ------------ ------ --------- - ----- --- - ----- -- -- - ----- -------- - ----- ------------ --- ----- ------ ---- -- --------- - -- --------- - -
Promise.prototype.finally()
在 ES9 中,Promise 实例新增了一个 finally 方法。它接收一个回调函数,在前两个 then 或 catch 方法执行完毕后调用该函数,无论 Promise 是 resolved 还是 rejected 都会执行该回调。
------------------------------------- ------------ -- - -- ------ --------- ------- -- -- ------------ -- - -- ------ -------- ------- -- -- ----------- -- - --------------------- ---
正则表达式命名捕获组
ES9 增加了一项非常实用的正则表达式特性-命名捕获组,它允许我们使用命名而非索引来定义捕获组。
----- ---- - ------------- ----- ------- - ----------------------------------------------- ----- ----- - -------------------- ------------------------------- -- ---- -------------------------------- -- -- ------------------------------ -- --
其他语言特性
此外,ES9 还包括了一些其他的语言特性,例如:
Object.values()
/Object.entries()
:Object.values()
返回一个包含对象所有的值的数组,Object.entries()
返回一个包含所有 [ key,value ] 对的数组 。- 支持 Unicode 字符
Array.prototype.sort()
的行为更改:比较器函数现在可以返回 0。
结论
ECMAScript 2018 引入了一些非常实用的新特性,让 JavaScript 变得更加灵活和强大。尽管不是所有特性都适用于所有项目,但它们可以帮助我们更轻松、更方便地编写 JavaScript 代码。建议开发者们根据项目需要合理使用这些特性,以获得更好的编程体验。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6710bdffad1e889fe2fbc7f2