Это принесло что-то интересное?
Генеральная ассамблея 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. Я получу небольшую комиссию, если вы зарегистрируетесь по моей ссылке.
Ваша поддержка очень важна для меня — спасибо.