ES9 有哪些新特性?

ECMAScript 2018 或称 ES9 ,是 JavaScript 的最新版本。它包含了各种新特性,这些特性都为前端开发提供了新的能力。在本文中,我们将会探究 ES9 新特性,包括异步迭代器、 Promise.finally() 和 Rest/Spread 属性。

异步迭代器

在过去的几年中,Promise 的出现改变了 JavaScript 中异步编程的方式,而在 ES9 中,有一个新的特性异步迭代器,可以进一步简化异步操作的开发。

异步迭代器与常规迭代器的区别在于,它们返回的值是一个 Promise 对象。这使得我们可以在异步操作完全完成之前,暂停迭代器的执行。

例如,我们可以使用异步迭代器来迭代一个异步数据集合:

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

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

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

在上面的代码中,“asyncGenerator”是一个异步迭代器函数。它将异步等待一段时间后生成一些数字,然后将他们作为 Promise 对象返回。在主函数中,使用“for await”循环来迭代异步生成器对象并打印出每个数字。

Promise.finally()

在 ES9 中,Promise 对象中新增了一个方法“finally()”。该方法传入一个回调函数,并且在 Promise 对象状态变为“resolved”或“rejected”时都会被执行。

例如:

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

当 Promise 对象执行完后,无论状态是什么,“finally()”方法中的回调函数都会被执行。

Rest/Spread 属性

在 ES8 中,我们已经可以使用对象和数组的 Rest/Spread 运算符来简化代码。在 ES9 中,我们可以工具这个特性来更新对象字面量和函数参数中的语法。

对象字面量的 Rest/Spread 属性

Rest/Spread 属性可以方便地从其他对象中扩展属性,同时也可以将对象字面量合并为一个新的对象。

例如:

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

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

在上面的代码中,“...obj1”将会把“obj1”的属性作为一个集合,再通过“d”和“e”添加到一个新的对象中。

函数参数中的 Rest/Spread 属性

我们也可以在函数参数中使用 Rest/Spread 属性,它们可以将函数参数转换为一个数组,或者快速的将传入的对象转换为函数参数。

例如:

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

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

在这个例子中,“params”参数通过使用 Rest 运算符来捕获一个数组,其中包含了传递给函数的任何其他参数。

结论

以上就是 ES9 的新特性。有了这些功能,前端开发人员可以更加便捷的使用 JavaScript 来构建高质量的 Web 应用程序。

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