Назад

ECMAScript 2026 официально утвержден: что завезли в стандарт JavaScript? 🚀

Новые возможности ES2026: точное суммирование, Map Upsert, Base64 и Hex, Error.isError, JSON.parse и Iterator.concat.

ECMAScript 2026 официально утвержден: что завезли в стандарт JavaScript? 🚀

Комитет TC39 одобрил 17-ю редакцию спецификации ES2026. Никакой революции и переписывания языка, но подъехали крайне полезные утилиты, которые закроют старые боли и избавят нас от мелких библиотек-костылей.

Вот главное из релиза, которое уже можно юзать нативно:

🔹 Math.sumPrecise() — точное сложение дробей Вечная боль 0.1 + 0.2 === 0.30000000000000004 наконец-то решена на уровне стандарта. Метод принимает итерируемый список чисел и складывает их без прогрессирующей потери точности, что критично для финансовых подсчетов. 🔹 Map.prototype.getOrInsert() и getOrInsertComputed() Нативный Upsert. Больше не нужно писать проверки if (!map.has(key)) map.set(...). getOrInsert(key, defaultValue) сразу вернет значение или запишет дефолтное, а getOrInsertComputed(key, callback) вызовет коллбэк для вычисления дефолта только тогда, когда ключа реально нет. 🔹 Нативная поддержка Base64 и Hex в Uint8Array Прощай, костыли с atob() и btoa(), которые работали со строками, а не с байтами. Теперь бинарные данные можно кодировать прямо из коробки: bytes.toBase64() и Uint8Array.fromBase64(string). То же самое добавили для Hex. 🔹 Error.isError() — надежная проверка на ошибки Проверка err instanceof Error часто ломалась, если код выполнялся в разных контекстах. Новый метод решает эту проблему глобально на уровне движка. 🔹 JSON.parse с доступом к исходному тексту. В функцию-ревивер JSON.parse(text, reviver) теперь третьим аргументом прокидывается объект context, содержащий context.source — оригинальную строковую запись конкретного свойства до его парсинга. Идеально, чтобы ловить слишком длинные числа и переводить их в BigInt до того, как JS округлит их в Number. 🔹 Iterator.concat() Позволяет эффективно склеивать несколько итераторов в один без промежуточного создания массивов и выделения лишней памяти.

Спека уже заапрувлена, большинство фич уже раскатаны по современным браузерам и рантаймам.

Читать

Какая фича больше всего зашла? Лично я ждал нативный Upsert для Мап еще года три назад.

Скопировано