ES10 之 ES2018 新特性

阅读时长 5 分钟读完

ECMAScript 2018(也被称为 ES10)是 JavaScript 的最新版本,它于 2018 年 6 月被正式发布。本文将介绍 ES10 新增的一些特性,包括异步迭代器,正则表达式改进, Promise.finally 方法,Rest / Spread 属性,RegExp 命名捕获组等等。

异步迭代器

异步迭代器是一个具有异步迭代功能的对象。它延迟迭代,可以让我们通过异步方式获取序列中的值。我们可以通过 for-await-of 循环或者 .next() 方法调用来迭代异步迭代器。

下面是一个例子,它展示了如何使用异步迭代器来处理一个类数组:

-- -------------------- ---- -------
----- -------- --------------------------- -
  ----- ------- - ---
  --- ----- ------ ---- -- -------------- -
    ----- ------ - ----- ---------------
    ---------------------
  -
  ------ --------
-

----- ----- - ---------- -- -- -------------------------- --------- -- -- ---------------------------
----------------------------- -- ------------------- -- ------- --------- --------

正则表达式改进

ES10 中引入了一些正则表达式的改进,包括 Unicode 转义、s 标志和命名捕获组。

Unicode 转义

在 ES10 中,我们可以使用 Unicode 转义来表示 Unicode 码位点。它通过前缀 \u{XXXXX} 的形式来实现。例如,如果我们要匹配 圆形数字 ①,可以这样做:

s 标志

s 标志用于匹配任何字符(包括换行符)。这个标志非常有用,因为在标准的正则表达式中,. 只能匹配除了换行符之外的字符。例如,如果我们要匹配任何字符(包括换行符):

命名捕获组

在 ES10 中,我们可以给捕获组命名,使用 (?<name>...) 的形式来实现。例如,如果我们要匹配日期,可以这样做:

Promise.finally 方法

ES10 引入了 Promise.finally() 方法,该方法在 Promise 完成或者拒绝时都会执行一个回调函数。这个方法对于在 Promise 链中无论 Promise 是否被拒绝都要执行相同操作的情况非常有用。例如,如果我们想要在 Promise 完成或者拒绝时隐藏一个 loading 动画:

Rest / Spread 属性

在 ES10 中,我们可以使用 Rest / Spread 属性来将对象或数组展开为一组参数。它可以让我们处理变长参数的情况。

展开数组

如果我们要在函数中传递一个数组作为参数,可以使用展开语法将其转换为一组参数:

展开对象

如果我们要在函数中传递一个对象作为参数,可以使用展开语法将其转换为一组参数:

-- -------------------- ---- -------
-------- ------------------ ---- ----- -
  -------------------- -- ------ ----- --- --- ----- -- - ----------
-

----- ------ - -
  ----- -------
  ---- ---
  ---- -----------
--

------------------------- -- ---- -- -- ----- --- --- ----- -- - ----------

总结

ES2018 引入了一些非常有用的功能,并且在许多方面都提高了 JavaScript 语言的强大程度。我们应该尝试使用这些新特性,以便更好地书写代码并提高代码的可维护性、可读性和可扩展性。

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

纠错
反馈