Если в коде или документации встречается пометка «ES6», «ES2015» или «ES-модуль», речь идёт о версии стандарта ECMAScript — формального описания языка, лежащего в основе JavaScript. Именно эта аббревиатура чаще всего скрывается за запросом «что такое ES», и путаница возникает из-за того, что одни и те же возможности языка называют то «ES6», то «ES2015», то просто «современный JavaScript».

Разобраться здесь важно не только начинающим разработчикам: от версии ES зависит, какие конструкции языка можно использовать в проекте, нужен ли транспилятор вроде Babel и будет ли код работать в старых браузерах. Ниже разберём, что такое ECMAScript, чем он отличается от JavaScript, какие версии существуют и как проверить их поддержку.

ES и ECMAScript: что скрывается за аббревиатурой

ECMAScript (сокращённо ES) — это официальный стандарт языка сценариев, который описывает синтаксис, типы данных, объекты и правила работы языка. Стандарт разрабатывается организацией Ecma International и публикуется в документе ECMA-262. Сам по себе ES — это не программа и не интерпретатор, а спецификация: текст, по которому создатели браузеров и движков реализуют язык.

JavaScript — самая известная реализация этого стандарта. Грубо говоря, ECMAScript определяет «как язык должен работать», а JavaScript — конкретное воплощение этих правил в движках вроде V8 (Chrome, Node.js), SpiderMonkey (Firefox) и JavaScriptCore (Safari). В повседневной речи разработчики часто смешивают термины, но в технических обсуждениях «ES» означает именно стандарт и его версии.

Важно понимать, что браузерный JavaScript включает больше, чем ECMAScript: работа с DOM, события, сетевые запросы описываются отдельными веб-стандартами. Поэтому, когда говорят «это поддерживается с ES6», речь идёт о ядре языка — синтаксисе и встроенных объектах, а не о браузерных API.

💡

ES — это стандарт языка (ECMA-262), а JavaScript — его практическая реализация в движках браузеров и Node.js.

Версии ES: от ES5 до современных выпусков

Нумерация версий ECMAScript исторически сбивала с толку. До 2015 года стандарты выходили нерегулярно и обозначались номером редакции: ES3, ES5. Начиная с 2015 года комитет TC39 перешёл на ежегодный цикл релизов, и версии стали обозначаться по году: ES2015, ES2016 и так далее. При этом за ES2015 закрепилось неформальное имя ES6, которое используется до сих пор.

Именно ES6/ES2015 стал переломным: он добавил классы, стрелочные функции, let и const, шаблонные строки, промисы и модули. Последующие ежегодные версии вносили более точечные изменения — например, async/await появился в ES2017. Ниже — ориентировочная сводка ключевых версий.

ВерсияГодКлючевые нововведения
ES52009Строгий режим, методы массивов map, filter, JSON
ES6 / ES20152015Классы, let/const, стрелочные функции, промисы, модули
ES20162016Оператор **, метод Array.prototype.includes
ES20172017Асинхронные функции async/await
ES20202020Опциональная цепочка ?., нулевое слияние ??

Конкретный перечень возможностей каждой версии стоит сверять с официальной спецификацией ECMA-262 или справочником MDN Web Docs, поскольку таблица выше отражает лишь наиболее известные изменения.

📊 С какой версией ECMAScript вы чаще всего работаете?
ES5 (старые проекты)
ES6 / ES2015
ES2017 и новее
Не использую JavaScript

Чем ES отличается от JavaScript

Этот вопрос задают почти все, кто впервые сталкивается с терминологией. Разница проста по сути, но важна на практике:

  • 📜 ECMAScript — стандарт-спецификация, документ, описывающий язык;
  • ⚙️ JavaScript — реализация стандарта в конкретных движках и средах;
  • 🌐 DOM и Web API — браузерные расширения, не входящие в ECMAScript;
  • 🧩 Диалекты — JScript, ActionScript и другие исторические реализации того же стандарта.

На практике это означает: если функция описана в стандарте ES2020, она рано или поздно появится во всех основных движках, но сроки внедрения различаются. Поэтому одна и та же конструкция может работать в свежем Chrome и отсутствовать в устаревшем браузере.

ES-модули: что это и почему о них все говорят

Отдельного упоминания заслуживает система модулей, введённая в ES2015. ES-модули (ESM) — это стандартный способ разбивать код на файлы и подключать их через import и export. До их появления в экосистеме использовались нестандартные форматы вроде CommonJS (команда require в Node.js).

Пример синтаксиса ES-модуля:

// math.js

export function sum(a, b) {

return a + b;

}

// app.js

import { sum } from './math.js';

В браузере ES-модули подключаются через атрибут type="module" в теге скрипта, а в Node.js поддержка зависит от версии среды и расширения файла (.mjs либо настройка в package.json). Поведение отличается между средами, поэтому конкретный способ подключения стоит проверять в документации используемой платформы.

💡

Чтобы браузер корректно обработал файл как ES-модуль, подключайте его через