ECMAScript 2018
JavaScript 版本号
旧的 ECMAScript 版本使用数字命名:ES5 和 ES6。
从 2016 年开始,版本使用年份命名:ES2016、2018、2020 ...
ECMAScript 2018 中的新功能
本章介绍 ECMAScript 2018 中的新功能
JavaScript 异步迭代
ECMAScript 2018 添加了异步迭代器和可迭代对象。
使用异步可迭代对象,我们可以在 for/of
循环中使用 await
关键字。
示例
for await () {}
JavaScript 异步迭代在 2020 年 1 月之后的所有现代浏览器中都受支持
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
2017 年 12 月 | 2020 年 1 月 | 2017 年 11 月 | 2017 年 9 月 | 2018 年 1 月 |
JavaScript Promise.finally
ECMAScript 2018 使用 Promise.finally
完成了 Promise 对象的完整实现。
示例
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 |
2017 年 12 月 | 2018 年 11 月 | 2018 年 1 月 | 2018 年 3 月 | 2018 年 1 月 |
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 |
2017 年 7 月 | 2020 年 1 月 | 2017 年 8 月 | 2018 年 3 月 | 2017 年 8 月 |
新的 JavaScript 正则表达式功能
ECMAScript 2018 添加了 4 个新的正则表达式功能
- Unicode 属性转义 (\p{...})
- 后顾断言 (?<= ) 和 (?<! )
- 命名捕获组
- s (dotAll) 标志
新的正则表达式功能从 2020 年 6 月开始在所有现代浏览器中得到支持
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
2018 年 1 月 | 2020 年 1 月 | 2020 年 6 月 | 2018 年 9 月 | 2018 年 2 月 |
JavaScript 线程
在 JavaScript 中,您可以使用 Web Workers API 来创建线程。
工作线程用于在后台执行代码,以便主程序可以继续执行。
工作线程与主程序同时运行。同时执行程序的不同部分可以节省时间。
JavaScript 共享内存
共享内存是一项允许线程(程序的不同部分)访问和更新同一内存中的相同数据的功能。
您可以通过传递一个指向保存数据的内存的 SharedArrayBuffer 对象来代替在线程之间传递数据。
SharedArrayBuffer
SharedArrayBuffer 对象表示一个类似于 ArrayBuffer 对象的固定长度原始二进制数据缓冲区。