ECMAScript 2017

JavaScript命名约定从ES1、ES2、ES3、ES5和ES6开始。

但是,ECMAScript 2016和2017并没有被称为ES7和ES8。

自2016年起,新版本按年份命名(ECMAScript 2016/2017/2018)。


ECMAScript 2018的新特性

本章讲介绍 ECMAScript 2018 的新特性:

  • Asynchronous Iteration
  • Promise Finally
  • Object Rest Properties
  • New RegExp Features

JavaScript Asynchronous Iteration

ECMAScript 2018添加了异步迭代器和iterables。

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

  1. for await () {}

Firefox和Safari是第一款支持JavaScript await 的浏览器:

方法
awaitChrome 63Edge 79Firefox 57Safari 11Opera 50
2017年12月2020年1月2017年11月2017年9月2018年1月

JavaScript Promise.finally

ECMAScript 2018使用 Promise.finally 全部完成 Promise 对象:

  1. let myPromise = new Promise();
  2. myPromise.then();
  3. myPromise.catch();
  4. myPromise.finally();

Firefox和Chrome是第一款支持 JavaScript 的 Promise.finally 的浏览器:

方法
Promise.finallyChrome 63Edge 18Firefox 58Safari 11.1Opera 50
2017年12月2018年11月2018年1月2018年5月2018年1月

JavaScript Object Rest Properties

ECMAScript 2018添加了 rest 属性。

这使我们能够销毁一个对象,并将剩余部分收集到一个新对象上:

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

Firefox和Chrome、Opera是第一款支持 JavaScript 对象的 rest 的浏览器:

方法
restChrome 60Edge 79Firefox 55Safari 11.1Opera 47
2017年7月2020年1月2017年8月2018年5月2017年8月

New JavaScript RegExp Features

ECMAScript 2018增加了4个新的正则特性:

  • Unicode Property Escapes (\p{…})
  • Lookbehind Assertions (?<= ) and (?<! )
  • Named Capture Groups
  • s (dotAll) Flag

Firefox和Chrome是第一款支持 JavaScript 对象的 async 的浏览器:

方法
Chrome 64Edge 79Firefox 78Safari 12Opera 51
2018年1月2020年1月2020年6月2018年1月2018年2月

分类导航