ECMAScript 2018
Угода про іменування JavaScript почалась з ES1, ES2, ES3, ES5 та ES6.
Але ECMAScript 2016 та ECMAScript 2017 не називалися ES7 та ES8.
З 2016 року нові версії іменуються по рокам (ECMAScript 2016/2017/2018).
Нові можливості ECMAScript 2018
В цьому розділі представлені нові функції в ECMAScript 2018:
JavaScript Асинхронна ітерація
В ECMAScript 2018 додані асинхронні ітератори та ітерації.
З асинхронними ітераціями ми можемо використовувати ключове слово await
в циклах for/of
.
Приклад
for await () {}
Firefox та Safari були першими браузерами з підтримкою асинхронної ітерації 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 завершує повну реалізацію об’єкту Promise з Promise.finally
:
Приклад
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome та Firefox були першими браузерами з підтримкою 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 Властивості
В ECMAScript 2018 додані rest властивості.
Це дозволяє зруйнувати об’єкт та зібрати залишки на новому об’єкті:
Приклад
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox та Opera були першими браузерами з підтримкою object rest властивостей:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
Нові можливості JavaScript RegExp
В ECMAScript 2018 додані 4 нові функції RegExp:
- Unicode Property Escapes (\p{...})
- Lookbehind Assertions (?<= ) and (?<! )
- Named Capture Groups
- s (dotAll) Flag
Chrome та Firefox були першими браузерами з підтримкою всіх нових функцій RegExp:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |