Перейти к основному содержимому

39 записей с тегом "ECMAScript"

Посмотреть все теги

Статические блоки инициализации классов

· 2 мин. чтения
Shu-yu Guo ([@_shu](https://twitter.com/_shu))

Новый синтаксис статического блока инициализации классов позволяет разработчикам собирать код, который должен выполняться один раз для определения класса, и размещать его в одном месте. Рассмотрим следующий пример, где генератор псевдослучайных чисел использует статический блок для инициализации пула энтропии один раз, когда выполняется определение class MyPRNG.

Интеграция WebAssembly с JavaScript BigInt

· 5 мин. чтения
Алон Закай

Функция JS-BigInt-Integration упрощает передачу 64-битных целых чисел между JavaScript и WebAssembly. В этом посте объясняется, что это значит и почему это полезно, включая упрощение работы для разработчиков, ускорение выполнения кода и уменьшение времени сборки.

Atomics.wait, Atomics.notify, Atomics.waitAsync

· 7 мин. чтения
[Марья Хёльтта](https://twitter.com/marjakh), неблокирующий блогер

Atomics.wait и Atomics.notify являются низкоуровневыми примитивами синхронизации, полезными для реализации мьютексов и других способов синхронизации. Однако, поскольку Atomics.wait блокирует выполнение, его невозможно вызвать в основном потоке (попытка сделать это вызывает TypeError).

Логические присваивания

· 4 мин. чтения
Шу-Ю Го ([@_shu](https://twitter.com/_shu))

JavaScript поддерживает ряд операторов составного присваивания, которые позволяют программистам лаконично выражать бинарную операцию вместе с присваиванием. На данный момент поддерживаются только математические или побитовые операции.

Индексы совпадений RegExp

· 4 мин. чтения
Майя Армянова ([@Zmayski](https://twitter.com/Zmayski)), регулярно выражая новые возможности

JavaScript теперь оснащён новым улучшением для регулярных выражений, называемым «индексы совпадений». Представьте, что вы хотите найти недопустимые имена переменных в JavaScript коде, совпадающие с зарезервированными словами, и вывести каретку и «подчеркивание» под именем переменной, например:

`String.prototype.replaceAll`

· 4 мин. чтения
Матиас Байненс ([@mathias](https://twitter.com/mathias))

Если вы когда-либо работали со строками в JavaScript, то, скорее всего, сталкивались с методом String#replace. String.prototype.replace(searchValue, replacement) возвращает строку с некоторыми заменёнными совпадениями в зависимости от указанных параметров:

Высокоуровневый `await`

· 4 мин. чтения
Майлз Боринс ([@MylesBorins](https://twitter.com/MylesBorins))

Высокоуровневый await позволяет разработчикам использовать ключевое слово await за пределами асинхронных функций. Он действует как большая асинхронная функция, заставляя другие модули, которые их import, ожидать перед началом выполнения своего тела.

Оператор объединения с null

· 7 мин. чтения
Джастин Риджвелл

Предложение об операторе объединения с null (??) добавляет новый оператор краткого замыкания, предназначенный для обработки значений по умолчанию.

Вы, возможно, уже знакомы с другими операторами краткого замыкания && и ||. Оба этих оператора работают с "истинными" и "ложными" значениями. Представьте следующий пример: lhs && rhs. Если lhs (читаем как "левая сторона") является ложным значением, выражение оценивается как lhs. В противном случае оно оценивается как rhs (читаем как "правая сторона"). Для примера lhs || rhs действует обратное правило. Если lhs является истинным значением, выражение оценивается как lhs. В противном случае оно оценивается как rhs.

Опциональная цепочка

· 4 мин. чтения
Майя Армянова ([@Zmayski](https://twitter.com/Zmayski)), разрыватель опциональных цепочек

Длинные цепочки доступа к свойствам в JavaScript могут быть рискованными, так как любое из них может оцениваться как null или undefined (также известные как "значения nullish"). Проверка существования свойства на каждом шаге легко превращается в глубокую вложенную структуру if-условий или длинное if-условие, воспроизводящее цепочку доступа к свойствам:

`globalThis`

· 2 мин. чтения
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Если вы писали JavaScript для использования в веб-браузере, возможно, вы использовали window для доступа к глобальному объекту this. В Node.js вы могли использовать global. Если вы писали код, который должен работать в обеих средах, вы могли определить, какой из них доступен, и затем использовать его — но список идентификаторов, которые нужно проверять, растет с увеличением числа окружений и случаев использования. Это быстро выходит из-под контроля: