详解 ECMAScript 2018 新特性

阅读时长 4 分钟读完

ECMAScript 2018 是 JavaScript 语言的最新标准,该标准中包含了一些新的特性和修改。本文将会深入地解释这些特性,为前端开发者们提供学习和指导。

Async Iterator 和 Generator

Async Iterator 和 Generator 是用于异步迭代的两个新标记。异步迭代器 (Async Iterator) 允许您进行异步迭代,在每个值 / 块上等待异步操作完成之后才继续处理。具体而言,给每次迭代都添加了异步方法,如 next 或 return,以表示异步值或异常:

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

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

Generator 是一个可以用于简单地迭代数据的函数,且可以在返回方法之后保留自己的状态和执行。Generator 函数在新标准中被增强了一些新特性,现在更加易于使用:

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

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

Promise.prototype.finally

Promise.prototype.finally 方法可以在 Promise 错误处理的 return / catch 的后面代码块的运行结束后执行指定代码块,它总是返回 Promise 对象。这是一种彻底释放资源的方式,因为不管 Promise 成功或失败都会释放处理程序:

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

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

Rest / Spread Property

Rest / Spread 是两个新操作符,它们使我们可以轻松地分解对象和数组,并将它们分散到所需的位置:

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

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

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

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

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

更好的正则表达式

在 ECMAScript 2018 中,正则表达式获得了一些新的特性,其中包括 s 修饰符,它可以使 . 表示任何字符,包括换行符。另外,正则表达式还支持名称捕获组,这使得命名的捕获组更容易识别:

总结

ECMAScript 2018 包含了许多新的特性和修改,本文深入地解释了异步迭代、Promise.prototype.finally、Rest / Spread 操作符以及更好的正则表达式等。学习这些新特性可以帮助前端开发者更加高效地使用 JavaScript 编写代码。

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

纠错
反馈