ECMAScript 2026 официально утверждён

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 года.

Фото аватара

Antony I

Веб разработчик, специализация на лучших мировых практиках: WordPress, WooCommerce, NextJS, Strapi, JAMStack ...

Основные типы проектов: CMS, eCommerce, SEO, LMS, ECM, BPM

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *