Это принесло что-то интересное?

Генеральная ассамблея ECMA одобрила спецификацию языка ECMAScript 2022 22 июня 2022 г., что означает, что теперь он официально является стандартом. Вскоре мы сможем использовать эти новые функции в JavaScript. Далее мы представим их один за другим:

Представлен await верхнего уровня

До этого ключевое слово await можно было использовать только внутри async функций, и при принудительном использовании возникала синтаксическая ошибка: await is only valid in async functions and the top level bodies of modules

Теперь можно использовать await на верхнем уровне файла, который будет рассматриваться как модуль ECMAScript. Вот официальный пример:

Ни один из операторов в usage.mjs не будет выполняться до тех пор, пока await в awaiting.mjs не выполнят свои промисы.

Это полезно в некоторых случаях, таких как динамический путь к зависимостям, инициализация ресурсов, откат зависимостей, модули WebAssembly и т. д.

Индексы соответствия регулярных выражений через флаг /d

Эта функция позволяет нам использовать символ d для обозначения начального и конечного индексов строки, которую мы хотим сопоставить. Раньше во время операции сопоставления строк можно было получить только массив, содержащий извлеченную строку и информацию об индексе. В некоторых случаях этого недостаточно. Поэтому, если вы установите флаг /d, вы дополнительно получите массив с начальным и конечным индексами.

Вот официальный пример:

Свойство cause для Error объектов

Свойство cause можно использовать в new Error() для записи причинно-следственной цепочки в ошибке.

Вот официальный пример:

Метод at для строк, массивов и типизированных массивов

Метод at() решает очень практическую проблему, заключающуюся в том, что все базовые индексируемые классы (Array, String, TypedArray) могут быть «отрицательно индексированы», как в Python. Это более общий подход, который заключается в разрешении относительной индексации.

const arr = ['1', '2', '3'];
// '3'
console.log(arr.at(-1));
// '2'
console.log(arr.at(-2));

Ниже приведен простой грубый полифилл, предоставленный GitHub:

Объект.hasOwn()

Object.hasOwn — удобная альтернатива Object.prototype.hasOwnProperty. Я подробно описал это в предыдущей статье:



Заключение

Кроме того, в элемент class были добавлены некоторые новые возможности, о которых я расскажу в следующих статьях:



Если у вас есть какие-либо мысли и сомнения по поводу контента, представленного сегодня, оставьте комментарий.

Рекомендации

[1] https://www.ecma-international.org/publications-and-standards/standards/ecma-262/

[2] https://github.com/tc39/proposal-top-level-await

[3] https://github.com/tc39/proposal-regexp-match-indices

[4] https://github.com/tc39/proposal-error-cause

[5] https://github.com/tc39/proposal-relative-indexing-method

Спасибо, что прочитали. Если вам нравятся такие истории и вы хотите поддержать меня, пожалуйста, подумайте о том, чтобы стать участником Medium. Это стоит 5 долларов в месяц и дает вам неограниченный доступ к контенту Medium. Я получу небольшую комиссию, если вы зарегистрируетесь по моей ссылке.

Ваша поддержка очень важна для меня — спасибо.