ECMAScript 2018
Original JavaScript version numbers were ES5 (2009) and ES6 (2015).
Since 2016, versions are named by year: ECMAScript 2016, 2017, 2018, 2019.
New Features in ECMAScript 2018
This chapter introduces the new features in ECMAScript 2018:
JavaScript Asynchronous Iteration
ECMAScript 2018 added asynchronous iterators and iterables.
With asynchronous iterables, we can use the await
keyword in for/of loops.
Example
for await () {}
Firefox and Safari were the first browsers with support for JavaScript asynchronous iteration:
| 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 finalizes the full implementation of the Promise object with Promise.finally:
Example
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome and Firefox were the first browsers with support for Promise.finally:
| Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
| Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
JavaScript Object Rest Properties
ECMAScript 2018 added rest properties.
This allows us to destruct an object and collect the leftovers onto a new object:
Example
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox, ans Opera were the first browsers with support for object rest properties:
| Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
| Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
New JavaScript RegExp Features
ECMAScript 2018 added 4 new RegExp features:
- Unicode Property Escapes (\p{...})
- Lookbehind Assertions (?<= ) and (?<! )
- Named Capture Groups
- s (dotAll) Flag
Chrome and Firefox were the first browsers with support for all the new RegExp features:
| Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
| Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |

