目录

ECMAScript 2018

JavaScript 版本号

旧的 JS 版本以数字命名:ES5 (2009) 和 ES6 (2015)。

从 2016 年开始,版本按年份命名:ECMAScript 2016、2017、2018、2019,...

ECMAScript 2018 的新功能

本章介绍 ECMAScript 2018 中的新功能:


JavaScript 异步迭代

ECMAScript 2018 添加了异步迭代器和可迭代对象。

对于异步迭代,我们可以使用await关键字在for/of循环。

示例

for await () {}

自 2020 年 1 月起,所有现代浏览器都支持 JavaScript 异步迭代:

Chrome 63 Edge 79 Firefox 57 Safari 11 Opera 50
Dec 2017 Jan 2020 Nov 2017 Sep 2017 Jan 2018

JavaScript Promise.finally

ECMAScript 2018 最终完成了 Promise 对象的完整实现Promise.finally

示例

let myPromise = new Promise();

myPromise.then();
myPromise.catch();
myPromise.finally();

Promise.finally自 2018 年 11 月起所有现代浏览器均支持:

Chrome 63 Edge 18 Firefox 58 Safari 11.1 Opera 50
Dec 2017 Nov 2018 Jan 2018 Mar 2018 Jan 2018


JavaScript 对象剩余属性

ECMAScript 2018 添加了剩余属性。

这允许我们破坏一个对象并将剩余物收集到一个新对象上:

示例

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }

自 2020 年 1 月起,所有现代浏览器都支持对象剩余属性:

Chrome 60 Edge 79 Firefox 55 Safari 11.1 Opera 47
Jul 2017 Jan 2020 Aug 2017 Mar 2018 Aug 2017

新的 JavaScript 正则表达式功能

ECMAScript 2018 添加了 4 个新的 RegExp 功能:

  • Unicode 属性转义 (\p{...})
  • 后向断言 (?<= ) 和 (?<!)
  • 命名捕获组
  • s (dotAll) 标志

自 2020 年 6 月起,所有现代浏览器都支持新的 RegExp 功能:

Chrome 64 Edge 79 Firefox 78 Safari 12 Opera 51
Jan 2018 Jan 2020 Jun 2020 Sep 2018 Feb 2018

JavaScript 线程

在 JavaScript 中,您可以使用 Web Workers API 来创建线程。

工作线程用于在后台执行代码,以便主程序可以继续执行。

工作线程与主程序同时运行。同时执行程序的不同部分可以节省时间。

JavaScript 共享内存

共享内存是一种允许线程(程序的不同部分)访问和更新同一内存中的相同数据的功能。

您可以传递一个指向保存数据的内存的 SharedArrayBuffer 对象,而不是在线程之间传递数据。

共享数组缓冲区

SharedArrayBuffer 对象表示与 ArrayBuffer 对象类似的固定长度的原始二进制数据缓冲区。