ECMAScript 2018
De naamgevingsconventie van JavaScript begon met ES1, ES2, ES3, ES5 en ES6.
Maar ECMAScript 2016 en 2017 heette niet ES7 en ES8.
Sinds 2016 worden nieuwe versies op jaartal genoemd (ECMAScript 2016 / 2017 / 2018).
Nieuwe functies in ECMAScript 2018
Dit hoofdstuk introduceert de nieuwe functies in ECMAScript 2018:
JavaScript asynchrone iteratie
ECMAScript 2018 heeft asynchrone iterators en iterables toegevoegd.
Met asynchrone iterables kunnen we het await
trefwoord in for/of
lussen gebruiken.
Voorbeeld
for await () {}
Firefox en Safari waren de eerste browsers met ondersteuning voor asynchrone iteratie van JavaScript:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
JavaScript Promise.eindelijk
ECMAScript 2018 voltooit de volledige implementatie van het Promise-object met Promise.finally
:
Voorbeeld
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome en Firefox waren de eerste browsers met ondersteuning voor Promise.finally
:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
Eigenschappen JavaScript-objectrest
ECMAScript 2018 heeft rest-eigenschappen toegevoegd.
Dit stelt ons in staat om een object te vernietigen en de restanten op een nieuw object te verzamelen:
Voorbeeld
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox en Opera waren de eerste browsers met ondersteuning voor objectrest-eigenschappen:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
Nieuwe JavaScript RegExp-functies
ECMAScript 2018 heeft 4 nieuwe RegExp-functies toegevoegd:
- Ontsnapt aan Unicode-eigenschappen (\p{...})
- Lookbehind Assertions (?<= ) en (?<! )
- Benoemde opnamegroepen
- s (dotAll) Vlag
Chrome en Firefox waren de eerste browsers met ondersteuning voor alle nieuwe RegExp-functies:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |