ECMAScript 2018
Konvence pojmenování JavaScriptu začala s ES1, ES2, ES3, ES5 a ES6.
ECMAScript 2016 a 2017 se však nenazývaly ES7 a ES8.
Od roku 2016 jsou nové verze pojmenovány podle roku (ECMAScript 2016 / 2017 / 2018).
Nové funkce v ECMAScript 2018
Tato kapitola představuje nové funkce v ECMAScript 2018:
Asynchronní iterace JavaScriptu
ECMAScript 2018 přidal asynchronní iterátory a iterovatelné.
U asynchronních iterovatelných můžeme použít await
klíčové slovo ve for/of
smyčkách.
Příklad
for await () {}
Firefox a Safari byly první prohlížeče s podporou asynchronní iterace JavaScriptu:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
JavaScript Promise.konečně
ECMAScript 2018 dokončuje úplnou implementaci objektu Promise pomocí Promise.finally
:
Příklad
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome a Firefox byly první prohlížeče s podporou Promise.finally
:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
Zbytkové vlastnosti objektu JavaScript
ECMAScript 2018 přidal odpočinkové vlastnosti.
To nám umožňuje zničit objekt a shromáždit zbytky na nový objekt:
Příklad
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox a Opera byly první prohlížeče s podporou vlastností pro zbytkové objekty:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
Nové funkce JavaScript RegExp
ECMAScript 2018 přidal 4 nové funkce RegExp:
- Unicode vlastnosti Escape (\p{...})
- Lookbehind Assertions (?<= ) a (?<! )
- Pojmenované skupiny zachycení
- s (tečkaVše) příznak
Chrome a Firefox byly první prohlížeče s podporou všech nových funkcí RegExp:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |