ES2018 和 ES9 的新特性详解

阅读时长 5 分钟读完

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 中,我们可以使用正则表达式的命名捕获组来方便地获取匹配项的值。命名捕获组可以让我们使用一个名称来引用匹配项的值,而不是使用索引值。

下面是命名捕获组的示例代码:

在上面的代码中,我们定义了一个正则表达式,并使用命名捕获组来获取日期的年、月、日。

其他新特性

除了上述特性之外,ES2018 还引入了其他一些新特性,包括:

  • Object.fromEntries() 方法,它将一个键值对数组转换成一个对象。
  • String.prototype.trimStart()String.prototype.trimEnd() 方法,它们分别用于删除字符串开头和结尾的空格字符。
  • 异步生成器函数,它们允许我们使用异步方式生成值序列。

结论

ES2018/ES9 引入了一些新特性,包括异步迭代器、Promise.prototype.finally()、Rest/Spread 属性、正则表达式命名捕获组等。这些新特性可以帮助我们更方便地处理异步操作、对象和数组、正则表达式等。我们应该尽快学习和使用这些新特性,以提高我们的编程效率和代码质量。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67413f72d40a3cb159e9f2ea

纠错
反馈