ES9 中的新特性和语言规范

ES9 是 ECMAScript 的第九个版本,也称为 ES2018,它在 2018 年发布。ES9 包含了一些新的特性和语法规范,这些改进可以帮助开发者更方便地编写代码。这篇文章将介绍其中几个新特性和语言规范。

异步迭代器

在 ES9 中,我们引入了异步迭代器。这个特性允许我们在异步代码中使用迭代器来遍历数据集。在之前的版本中,我们只能使用回调函数或 Promise 来处理异步代码中的数据集,这将导致代码变得冗长和难以维护。

比如,你可以定义一个异步迭代器来遍历一个可异步读取的文件:

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

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

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

上面的代码中,我们使用 for await...of 来遍历 readFileAsync 返回的异步迭代器。它会依次输出文件中的每一行。

Promise.finally()

在 ES9 中,Promise 对象新增了一个 finally() 方法,该方法可以让我们在 Promise 完成之后执行一些操作,不管 Promise 是成功还是失败。

比如,我们可以使用 finally() 方法来关闭一个文件句柄:

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

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

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

上面的代码中,我们在 Promise 完成之后使用 finally() 方法来关闭文件句柄。

Rest/Spread 属性

在 ES9 中,我们可以在对象字面量中使用 Rest/Spread 属性。这个特性可以让我们更方便地操作一组属性。

比如,你可以使用 Rest 属性来获取对象中除了某些属性以外的所有属性:

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

上面的代码中,我们使用 Rest 属性来获取 user 对象中除了 idusername 属性以外的所有属性,存储在 rest 对象中。

同样的,我们也可以使用 Spread 属性来合并多个对象:

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

上面的代码中,我们使用 Spread 属性来合并 user1user2 对象,存储在 merged 对象中。

Object.fromEntries()

在 ES9 中,我们可以使用 Object.fromEntries() 方法将一个键值对数组转换成对象。

比如,你可以使用这个方法来将 URL 中的查询参数转换为一个对象:

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

上面的代码中,我们将 URL 中的查询参数转换为一个对象,存储在 paramsObj 中。

结论

ES9 中引入了一些新的特性和语言规范,这些改进可以让我们更方便地编写 JavaScript 代码。异步迭代器、Promise.finally()、Rest/Spread 属性和 Object.fromEntries() 都是非常有用的特性,值得我们了解和学习。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670b6db1d91dce0dc88a77dc