История стандарта EcmaScript

Эпоха становления (1997–2009) ES1 (1997): Рождение стандарта на базе JavaScript 1.1. Базовые типы, объекты и синтаксис. ES3 (1999): Первый мощный апдейт. Появились регулярные выражения (RegExp), обработка ошибок (try/catch), инструкция switch и do-while. ES5 (2009): Версия, на которой «вырос» современный вебStrict Mode: Строгий режим для отлова ошибок.

  • JSON: Встроенная поддержка JSON.parse и stringify.
  • Методы массивов: map, filter, forEach, reduce, every, some.
  • Геттеры и сеттеры: Возможность определять логику при чтении/записи свойств объекта.

Революция ES6 (2015) Самое масштабное обновление в истории языка:

  • let и const: Блочная область видимости вместо var.
  • Стрелочные функции (=>): Краткий синтаксис и сохранение контекста this.
  • Классы (class): Синтаксический сахар над прототипным наследованием.
  • Модули (import/export): Официальный стандарт для разделения кода на файлы.
  • Промисы (Promise): Нативный инструмент для работы с асинхронностью.
  • Шаблонные строки: Интерполяция переменных через ${}.
  • Деструктуризация: Быстрое извлечение данных из массивов и объектов.
  • Spread (...) и Rest: Операторы расширения и сбора параметров.

Ежегодные обновления (2016–2024) ES2016 (ES7): Оператор возведения в степень (**) и Array.includes(). ES2017 (ES8):

  • async / await: Упрощение работы с промисами.
  • Object.values / Object.entries: Получение данных из объектов в виде массивов. ES2018 (ES9): Асинхронные итераторы (for await...of) и Spread/Rest для объектов. ES2019 (ES10): Array.flat() (выпрямление вложенных массивов) и Object.fromEntries(). ES2020 (ES11):
  • Optional Chaining (?.): Безопасное обращение к свойствам объекта.
  • Nullish Coalescing (??): Проверка на null/undefined.
  • BigInt: Тип для работы с огромными числами. ES2021 (ES12): String.replaceAll(), логические операторы присваивания (&&=, ||=, ??=) и Promise.any(). ES2022 (ES13): Приватные поля в классах (#field), top-level await и метод .at() для массивов (поддерживает отрицательные индексы). ES2023 (ES14): Иммутабельные методы массивов (toSorted, toReversed, toSpliced) — возвращают копию вместо изменения оригинала. ES2024 (ES15):
  • Object.groupBy: Группировка элементов массива по ключу.
  • Promise.withResolvers: Создание промиса с внешним доступом к resolve/reject.

Будущее (2025+) ES2025 (ES16): Ожидается внедрение Set methods (объединение, пересечение множеств), Iterator helpers (методы как map/filter прямо для итераторов) и атрибуты импорта (import ... with { type: 'json' }). Drafts: В активной разработке находятся Temporal API (замена Date) и Pattern Matching.