ES2018,也称为 ES9,是 JavaScript 的最新版本。本文将介绍 ES2018/ES9 的新特性,并提供详细的代码示例。
异步迭代器
ES2018 中,我们可以通过异步迭代器来遍历异步数据。异步迭代器是一个返回异步迭代的对象。我们可以使用 for-await-of
循环来遍历异步迭代器,就像使用 for-of
循环遍历同步迭代器一样。
下面是一个异步迭代器的示例代码:
-- -------------------- ---- ------- ----- --------- --------------------- - ----- -- ----- -- ----- -- - ------ ---------- - --- ----- ------ --- -- ---------------------- - ----------------- - -----
在上面的代码中,我们定义了一个异步迭代器 createAsyncIterable
,它返回一个 Promise 对象。我们使用 for-await-of
循环遍历异步迭代器并打印出每个数字。
Promise.prototype.finally()
在 ES2018 中,Promise 增加了一个新的方法 finally()
。finally()
方法接受一个回调函数作为参数,在 Promise 执行完毕后执行该回调函数。不管 Promise 是成功还是失败,都会执行 finally()
方法中的回调函数。finally()
方法返回一个新的 Promise 对象,它的状态与原始 Promise 对象的状态相同。
下面是一个 finally()
方法的示例代码:
-- -------------------- ---- ------- -------- ----------- - ------ ----------------------------------------------------- -------------- -- ---------------- ---------- -- ------------------ ------------ -- --------------------- ----------- -- ------------------------ ------------- - ------------
在上面的代码中,我们使用 fetch()
方法获取 JSON 数据,并使用 Promise 处理异步操作。我们在 Promise 链的最后添加了一个 finally()
方法,它在 Promise 执行完毕后打印一条消息。
Rest/Spread 属性
在 ES2018 中,我们可以使用 Rest/Spread 属性来处理对象和数组。Rest 属性用于将对象或数组的剩余元素收集到一个新的对象或数组中。Spread 属性用于将对象或数组展开成多个元素。
下面是 Rest/Spread 属性的示例代码:
-- -------------------- ---- ------- -- ---- -- ----- - -- -- ------- - - - -- -- -- -- -- -- -- - -- --------------- -- - --------------- -- - ------------------ -- - -- -- -- - - -- ------ -- ----- ---- - --- -- --- ----- ---- - --- -- --- ----- ---- - --------- --------- ------------------ -- --- -- -- -- -- --
在上面的代码中,我们使用 Rest 属性将对象的剩余元素收集到一个新的对象中。我们还使用 Spread 属性将两个数组展开成一个新的数组。
正则表达式命名捕获组
在 ES2018 中,我们可以使用正则表达式的命名捕获组来方便地获取匹配项的值。命名捕获组可以让我们使用一个名称来引用匹配项的值,而不是使用索引值。
下面是命名捕获组的示例代码:
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; const match = regex.exec('2021-06-30'); console.log(match.groups.year); // 2021 console.log(match.groups.month); // 06 console.log(match.groups.day); // 30
在上面的代码中,我们定义了一个正则表达式,并使用命名捕获组来获取日期的年、月、日。
其他新特性
除了上述特性之外,ES2018 还引入了其他一些新特性,包括:
Object.fromEntries()
方法,它将一个键值对数组转换成一个对象。String.prototype.trimStart()
和String.prototype.trimEnd()
方法,它们分别用于删除字符串开头和结尾的空格字符。- 异步生成器函数,它们允许我们使用异步方式生成值序列。
结论
ES2018/ES9 引入了一些新特性,包括异步迭代器、Promise.prototype.finally()、Rest/Spread 属性、正则表达式命名捕获组等。这些新特性可以帮助我们更方便地处理异步操作、对象和数组、正则表达式等。我们应该尽快学习和使用这些新特性,以提高我们的编程效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67413f72d40a3cb159e9f2ea