ECMAScript 2018
Соглашение об именовании JavaScript началось с ES1, ES2, ES3, ES5 и ES6.
Но ECMAScript 2016 и 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 |