ECMAScript 2018
JavaScript 命名约定从 ES1、ES2、ES3、ES5 和 ES6 开始。
但, ECMAScript 2016 和ECMAScript 2017 并不叫ES7和ES8。
自 2016 年起,新版本按年份命名(ECMAScript 2016 / 2017 / 2018)。
ECMAScript 2018 中的新功能
本章介绍了 ECMAScript 2018 中的新特性:
JavaScript 异步迭代
ECMAScript 2018 添加了异步迭代器和可迭代对象。
对于异步迭代器,我们可以使用 await
关键词for/of
循環。
例子
用于等待(){}
Firefox 和 Safari 是第一批支持 JavaScript 异步迭代的浏览器:
Chrome 63 | 边缘 79 | Firefox 57 | Safari 11 | 歌剧 50 |
2017 年 12 月 | 2020 年 1 月 | 2017 年 11 月 | 2017 年 9 月 | 2018 年 1 月 |
JavaScript Promise.finally
ECMAScript 2018 完成了 Promise 对象的完整实现, Promise.finally
:
例子
让 myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome 和 Firefox 是第一批支持 Promise.finally
:
Chrome 63 | 边缘 18 | Firefox 58 | Safari 11.1 | 歌剧 50 |
2017 年 12 月 | 2018 年 11 月 | 2018 年 1 月 | 2018 年 3 月 | 2018 年 1 月 |
JavaScript 对象 Rest 属性
ECMAScript 2018 添加了 rest 属性。
这使我们能够破坏一个对象并将剩余部分收集到一个新对象上:
例子
让 { x,y,...z } = { x:1,y:2,a:3,b:4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome、Firefox 和 Opera 是首批支持对象剩余属性的浏览器:
铬 60 | 边缘 79 | Firefox 55 | Safari 11.1 | 歌剧 47 |
2017 年 7 月 | 2020 年 1 月 | 2017 年 8 月 | 2018 年 3 月 | 2017 年 8 月 |
新的 JavaScript RegExp 功能
ECMAScript 2018 增加了 4 个新的 RegExp 功能:
- Unicode 属性转义 (\p{...})
- 后视断言 (?<= ) 和 (?
- 命名捕获组
- s (dotAll) 标志
Chrome 和 Firefox 是首批支持所有新 RegExp 功能的浏览器:
Chrome 64 | 边缘 79 | Firefox 78 | Safari 12 | 歌剧 51 |
2018 年 1 月 | 2020 年 1 月 | 2020 年 6 月 | 2018 年 9 月 | 2018 年 2 月 |