ECMAScript 2026 официально опубликован: что изменится в JavaScript в 2026 году
-
ECMAScript 2026 официально вышел. Это 17-я редакция стандарта JavaScript, которая добавляет полезные инструменты для повседневной разработки. Теперь код станет чище и надежнее.
Разработчики давно ждали этих обновлений. Они решают проблемы с датами, регулярками и большими числами. Прочитав статью, вы поймете, как использовать новинки, чтобы ускорить работу и избежать ошибок в проектах.
Новое в работе с датами и временем: Temporal API
Temporal API - главное событие ECMAScript 2026. Раньше даты обрабатывали через Date, но это приводило к ошибкам из-за часовых поясов и локалей. Temporal вводит классы вроде Temporal.PlainDate и Temporal.ZonedDateTime, которые работают предсказуемо. Спецификация прошла тысячи тестов, чтобы покрыть все случаи.
Например, раньше сравнение дат в разных зонах могло сломать логику. Теперь Temporal.Now.zonedDateTimeISO() дает точное текущее время с учетом зоны. Это упрощает код в веб-приложениях, где пользователи из разных стран. Масштаб API большой, но он закрывает дыры в старых библиотеках.
Вот ключевые классы Temporal:
- Temporal.PlainDate: для дат без времени, идеально для календарей.
- Temporal.ZonedDateTime: с зоной, поддерживает UTC и offset.
- Temporal.Duration: точный подсчет интервалов, без ошибок накопления.
Класс Старый подход (Date) Новый Temporal Простая дата new Date(‘2026-03-09’) Temporal.PlainDate.from(‘2026-03-09’) Зона ручной offset Temporal.ZonedDateTime.from() с ‘UTC’ Длительность getTime() разница Temporal.Duration.from() Важно: Temporal не заменяет Date полностью, но рекомендуется для новых проектов.
Улучшения RegExp и Promise
RegExp стал мощнее с методом RegExp.escape(). Он экранирует строки для безопасного использования в паттернах, без ручного escaping. Еще добавили синтаксис для флагов внутри regex, типа /test/giu - это удобно для динамических шаблонов.
Promise.try() упрощает вызов функций, которые могут вернуть промис или нет. Всегда возвращает Promise, ловит ошибки на лету. Float16Array расширяет TypedArray для 16-битных float - полезно для графики и ML в браузере. Методы DataView.getFloat16() и Math.f16round() дополняют набор.
Основные новинки:
- RegExp.escape(‘*.txt’) - готовый паттерн без ошибок.
- /abc/def/u:i - флаги inline, гибкость без RegExp().
- Promise.try(fn) - унифицирует async/sync код.
Эти фичи снижают boilerplate и делают код короче на 20-30% в типичных задачах.
JSON и Math: точность для больших данных
JSON теперь парсит BigInt с ревайтером. Пример: digitsToBigInt проверяет строку на цифры и возвращает BigInt. Это решает проблему с числами больше Number.MAX_SAFE_INTEGER. JSON.rawJSON() для сериализации BigInt в строку.
Math.sumPrecise() суммирует числа без потери точности - критично для финансов и симуляций. Array.prototype.sort теперь stable по стандарту, не меняет порядок равных элементов.
Примеры в коде:
const big = BigInt('1' + '0'.repeat(1000)); JSON.parse(String(big), (k, v, {source}) => /^[0-9]+$/.test(source) ? BigInt(source) : v) === big;- Math.sumPrecise([0.1, 0.2]) - вернет 0.3 точно.
- Stable sort: [1, 2, 1].sort((a,b)=>0) сохранит порядок вторых 1.
Метод Проблема раньше Решение в ES2026 JSON + BigInt потеря точности reviver с BigInt Math.sum накопление ошибок sumPrecise() Array.sort нестабильный stable по дефолту Iterator, Set и мелкие полировки
Добавили глобальный Iterator с методами для итераторов. Set получил методы вроде intersection() и union(). Это упрощает операции над множествами без lodash.
JSON.stringify() всегда выдает UTF-8, Function.toString() уточнили для source text. Поддержка U+2028 в строках aligns с JSON.
Ключевые добавления:
- Iterator.from() - из массива или генератора.
- Set.prototype.intersection(otherSet).
- Float16Array для WebGL и тензоров.
Эволюция без революций
ECMAScript 2026 шлифует язык аккуратно. Temporal - звезда релиза, но есть и другие инструменты для точности и удобства. Многие фичи уже в Canary-версиях браузеров.
Осталось место для экспериментов на stage 3, вроде новых паттернов. Стоит протестировать в проектах, чтобы увидеть, как они влияют на производительность.
Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.
Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост мог бы стать ещё лучше 💗
Зарегистрироваться Войти© 2024 - 2026 ExLends, Inc. Все права защищены.