30 июня 2026 года ECMA International утвердила 17-е издание спецификации JavaScript — ECMAScript 2026. Обновление получилось компактным, но сфокусированным на практических улучшениях: точных вычислениях, асинхронных операциях, итераторах, коллекциях, работе с бинарными данными и JSON. Новые методы стандартной библиотеки позволят разработчикам писать чище и быстрее, отказываясь от сторонних решений.
Основные улучшения
Новое издание получилось относительно компактным, но каждое включённое предложение прошло стадии TC39 и достигло четвёртой стадии. Ниже — детали главных изменений.
Math.sumPrecise() — точное суммирование
Метод Math.sumPrecise() принимает итерируемый объект с числами и возвращает их сумму с минимальной потерей точности. В отличие от обычного сложения через reduce, алгоритм sumPrecise компенсирует ошибки округления при работе с величинами разного порядка. Это востребовано в финансовых расчётах, научных вычислениях и любых сценариях, где накопление погрешности недопустимо.
Iterator.concat() — склеивание итераторов
Статический метод Iterator.concat() принимает несколько итерируемых или итераторов и возвращает новый Iterator, последовательно выдающий значения из всех переданных источников. Теперь объединить данные из генератора, массива и Set можно без ручного написания вложенных циклов или промежуточных массивов.
Array.fromAsync() — массивы из асинхронных источников
Array.fromAsync() работает как Array.from(), но поддерживает асинхронные итераторы, async-функции отображения и другие асинхронные источники. Метод упрощает сбор данных из потоков, асинхронных генераторов и API, возвращающих чанки по мере готовности, — идеальный спутник для async/await и серверного рендеринга.
Error.isError() — надёжная проверка ошибок
Статический метод Error.isError() позволяет точно определить, является ли переданное значение экземпляром ошибки, включая объекты, пришедшие из других областей исполнения (iframes, Worker). Это решает давнюю проблему с instanceof Error, который не всегда корректно работает в кросс-контекстных сценариях.
Новые методы Map и WeakMap
Для Map.prototype и WeakMap.prototype добавлены методы getOrInsert и getOrInsertComputed. Они принимают ключ и значение (или функцию, вычисляющую значение) и возвращают существующее значение, если ключ уже есть, иначе вставляют и возвращают новое. Подобное upsert-поведение упрощает работу со счётчиками, кешами и инициализацией по требованию.
Методы Uint8Array для hex и base64
Типизированный массив Uint8Array обзавёлся парой методов: fromHex() и toHex() для преобразования в hex-строки и обратно, а также fromBase64() и toBase64() для кодирования/декодирования в Base64. Это напрямую отвечает на растущий спрос со стороны криптографии, обработки изображений, сессионных токенов и любых бинарных протоколов.
Улучшения JSON
Обновление затрагивает два аспекта работы с JSON:
- Доступ к исходному сегменту в
JSON.parse()— reviver-функция получает дополнительный аргумент, содержащий исходную JSON-строку обрабатываемого сегмента. Это открывает возможности для глубокого анализа, валидации и трансформации данных в момент разбора. JSON.rawJSON()— метод возвращает специальный объект-обёртку, который при передаче вJSON.stringify()подставляет указанный примитив «как есть», без кавычек или дополнительной обработки. Позволяет точно управлять выводом там, где требуется нестандартное представление (например, встраивание raw-строк или чисел сверх стандартных ограничений).
Что это значит для разработчиков
Большинство нововведений — это точечные, но долгожданные расширения стандартной библиотеки. Они сокращают зависимость от сторонних библиотек в повседневных задачах: точное суммирование больше не требует pull-реквеста с кастомной функцией, объединение итераторов перестаёт быть головной болью, а работа с бинарными данными становится тривиальной. Разработчики, активно использующие асинхронные источники, JSON-пайплайны и математические вычисления, получат новые инструменты прямо в языке.
Когда ожидать поддержку в браузерах и Node.js
Функции, достигшие Stage 4, попадают в свежие сборки JavaScript-движков максимально быстро. По устоявшейся практике, пользователи Chrome, Firefox и Safari увидят перечисленные методы в одном из ближайших минорных обновлений, а Node.js, как правило, включает их в очередную чётную версию. Ориентировочный срок появления — вторая половина 2026 года и начало 2027 года.