История стандарта 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.