ECMAScript 2018
La convenzione di denominazione di JavaScript è iniziata con ES1, ES2, ES3, ES5 ed ES6.
Ma ECMAScript 2016 e 2017 non è stato chiamato ES7 ed ES8.
Dal 2016 le nuove versioni sono nominate per anno (ECMAScript 2016 / 2017 / 2018).
Nuove funzionalità in ECMAScript 2018
Questo capitolo introduce le nuove funzionalità di ECMAScript 2018:
Iterazione asincrona JavaScript
ECMAScript 2018 ha aggiunto iteratori e iterabili asincroni.
Con gli iterabili asincroni, possiamo usare la await
parola chiave in for/of
loop.
Esempio
for await () {}
Firefox e Safari sono stati i primi browser con supporto per l'iterazione asincrona JavaScript:
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 finalizza la piena implementazione dell'oggetto Promise con Promise.finally
:
Esempio
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome e Firefox sono stati i primi browser con supporto per Promise.finally
:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
Proprietà di riposo dell'oggetto JavaScript
ECMAScript 2018 ha aggiunto le proprietà di riposo.
Questo ci permette di distruggere un oggetto e raccogliere gli avanzi su un nuovo oggetto:
Esempio
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox e Opera sono stati i primi browser con supporto per le proprietà di riposo degli oggetti:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
Nuove funzionalità JavaScript RegExp
ECMAScript 2018 ha aggiunto 4 nuove funzionalità RegExp:
- Escape proprietà Unicode (\p{...})
- Asserzioni Lookbehind (?<= ) e (?<! )
- Gruppi di acquisizione denominati
- s (puntoTutto) Flag
Chrome e Firefox sono stati i primi browser a supportare tutte le nuove funzionalità di RegExp:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |