Старые версии JS названы номерами: ES5 (2009) и ES6 (2015).
С 2016 года версии именуются по годам: ECMAScript 2016, 2017, 2018, 2019,...
В этой главе представлены новые функции ECMAScript 2018:
Асинхронная итерация
Обещай наконец
Свойства остатка объекта
Новые возможности регулярных выражений
Общая память JavaScript
В ECMAScript 2018 добавлены асинхронные итераторы и итераторы.
При асинхронных итерациях мы можем использовать await. ключевое слово в циклах for/of.
for await () {}Асинхронная итерация JavaScript поддерживается во всех современных браузерах с января 2020 года:
| Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
| Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
ECMAScript 2018 завершает полную реализацию объекта Promise с помощью Promise.finally:
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();Promise.finally поддерживается во всех современных браузерах с ноября 2018 г.:
| Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
| Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
В ECMAScript 2018 добавлены остальные свойства.
Это позволяет нам разрушить объект и собрать остатки в новый объект:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }Остальные свойства объекта поддерживаются во всех современных браузерах с января 2020 года:
| Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
| Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
В ECMAScript 2018 добавлены 4 новые функции RegExp:
Экранирование свойств Юникода (\p{...})
Утверждения просмотра позади (?<=) и (?
Именованные группы захвата
s (dotAll) Флаг
Новые функции RegExp поддерживаются во всех современных браузерах с июня 2020 года:
| Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
| Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |
В JavaScript вы используете API Web Workers для создания потоков.
Рабочие потоки используются для выполнения кода в фоновом режиме, чтобы основная программа могла продолжить выполнение.
Рабочие потоки выполняются одновременно с основной программой. Одновременное выполнение разных частей программы может сэкономить время.
Общая память — это функция, которая позволяет потокам (различным частям программы) получать доступ и обновлять одни и те же данные в одной и той же памяти.
Вместо передачи данных между потоками вы можете передать объект SharedArrayBuffer. это указывает на память, в которой сохраняются данные.
Объект SharedArrayBuffer представляет собой буфер необработанных двоичных данных фиксированной длины, аналогичный объекту ArrayBuffer.