2018 年 JavaScript 新特性 ——ECMAScript 2018 (ES9) 特性详解

阅读时长 4 分钟读完

JavaScript 是一门非常受欢迎的编程语言,随着互联网的发展,JavaScript 也在不断的发展和完善。2018 年,ECMAScript 2018 (ES9) 版本正式发布,引入了一些新的特性,本文将对这些特性进行详细的介绍和解释。

异步迭代

在 ES9 中,新增了异步迭代的特性,可以使用 for-await-of 来循环遍历异步迭代器。异步迭代器是指返回 Promise 的迭代器,例如 asyncGenerator 函数。下面是一个示例代码:

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

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

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

上面的代码中,asyncGenerator 函数返回一个异步迭代器,asyncIterator 函数使用 for-await-of 循环遍历异步迭代器,并将每个 Promise 的结果输出到控制台。

Promise.prototype.finally

Promise.prototype.finally 是 Promise 的一个新方法,可以在 Promise 最终状态(即 resolved 或 rejected)后执行指定的回调函数。这个方法不管 Promise 是成功还是失败,都会执行回调函数。下面是一个示例代码:

上面的代码中,finally 方法会在 Promise 的状态改变后执行,无论 Promise 是成功还是失败。在这个示例中,finally 方法会输出 'finally',然后 Promise 的值被成功地解决为 1,最后输出 1。

Rest/Spread 属性

在 ES9 中,可以使用 Rest/Spread 属性来获取对象中的剩余属性和展开属性。下面是一个示例代码:

上面的代码中,{ a, ...rest } = obj 语法中的 ...rest 表示获取对象 obj 中除了 a 属性外的所有属性。在第二个示例中,使用展开属性 ...objobj 中的所有属性展开,并新增了一个 d 属性。

正则表达式命名捕获组

在 ES9 中,新增了正则表达式命名捕获组的特性,可以给正则表达式的捕获组命名。下面是一个示例代码:

上面的代码中,(?<year>\d{4}) 表示给第一个捕获组命名为 year(?<month>\d{2}) 表示给第二个捕获组命名为 month(?<day>\d{2}) 表示给第三个捕获组命名为 day。在代码中,使用 match.groups.yearmatch.groups.monthmatch.groups.day 来获取对应的值。

其他特性

除了上面介绍的特性,ES9 还新增了一些其他的特性,包括:

  • Promise.prototype.toString(): 可以使用 toString 方法来获取 Promise 的字符串表示。
  • Object.fromEntries(): 可以将一个键值对数组转换为一个对象。
  • JSON.stringify() 的改进:JSON.stringify() 方法现在可以接受一个 replacer 函数的第二个参数,可以更加精细地控制序列化过程。

结论

ES9 引入的这些新特性,可以帮助开发者更好地编写异步代码、更加方便地操作对象、更加精细地控制序列化过程。了解这些特性,可以让我们更加高效地编写 JavaScript 代码。

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

纠错
反馈