ECMAScript 2018
Die JavaScript-Namenskonvention begann mit ES1, ES2, ES3, ES5 und ES6.
ECMAScript 2016 und 2017 hießen jedoch nicht ES7 und ES8.
Seit 2016 werden neue Versionen nach Jahr benannt (ECMAScript 2016 / 2017 / 2018).
Neue Funktionen in ECMAScript 2018
Dieses Kapitel stellt die neuen Funktionen in ECMAScript 2018 vor:
JavaScript asynchrone Iteration
ECMAScript 2018 hat asynchrone Iteratoren und Iterables hinzugefügt.
Bei asynchronen Iterables können wir das await
Schlüsselwort in for/of
Schleifen verwenden.
Beispiel
for await () {}
Firefox und Safari waren die ersten Browser mit Unterstützung für asynchrone JavaScript-Iteration:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
JavaScript Promise.endlich
ECMAScript 2018 schließt die vollständige Implementierung des Promise-Objekts ab mit Promise.finally
:
Beispiel
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome und Firefox waren die ersten Browser mit Unterstützung für Promise.finally
:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
JavaScript-Objekt-Rest-Eigenschaften
ECMAScript 2018 hat Rest-Eigenschaften hinzugefügt.
Dies ermöglicht es uns, ein Objekt zu zerstören und die Reste auf einem neuen Objekt zu sammeln:
Beispiel
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox und Opera waren die ersten Browser mit Unterstützung für Objekt-Rest-Eigenschaften:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
Neue JavaScript-RegExp-Funktionen
ECMAScript 2018 hat 4 neue RegExp-Funktionen hinzugefügt:
- Escapezeichen für Unicode-Eigenschaften (\p{...})
- Lookbehind-Assertionen (?<= ) und (?<! )
- Benannte Erfassungsgruppen
- s (dotAll) Flag
Chrome und Firefox waren die ersten Browser mit Unterstützung für alle neuen RegExp-Funktionen:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |