Первое приближение к общему пониманию ECMAScript Language Specification
«The World’s Most Misunderstood Programming Language Has Become the World’s Most Popular Programming Language».
— Douglas Crockford,
an article, 20081Добро пожаловать
MyJS Web Docs — это неофициальная авторская документация в формате непринуждённого разговора с читателем, представляющая из себя набор сгруппированных по главам тем, мыслей, фактов, выводов и собственных мнений относительно того, чем для меня является спецификация ECMAScript, как для разработчика на языке JavaScript. Я попытался проникнуться содержанием данной спецификации и в помощь всем остальным, кто тоже захочет её постичь, решил написать данный документ, отражающий моё видение тех вещей, которые находятся непосредственно в зоне ответственности официального стандарта ECMA-262.
Документация вынесена на суд общественности и комьюнити разработчиков в полном объёме. Активные споры и конструктивные предложения приветствуются.
🗂️ Содержание
В данный момент продукт находится на этапе активной разработки! Содержимое и оформление может изменяться.
По мере возможности данная документация постепенно будет дополняться и редактироваться согласно новым версиям спецификации ECMAScript и появлению мнений и оценок со стороны читающих её людей, которые захотят поделиться своими мыслями и сделать свой вклад в этот продукт.
Здесь представлено полное доступное содержание документации:
Часть 1: ECMAScript
- Глава 0: Важное предисловие
- Глава 1: Методология исследования
- Глава 2: Введение
- Глава 3.0: Начало языка
- Глава 3.1: Грамматика языка спецификации
- Глава 3.2: Грамматика — Свобода vs Сложность
- Глава 3.3: Типы языка спецификации ✏️
- Глава 3.4: Алгоритмы "под капотом"
- Глава 4.0: Такие разные Records ✏️
- Глава 4.1: Environvent Record или Funarg проблема ✏️
- Глава 5: Продвинутые алгоритмы
- Глава 6: Realms ✏️
🍰 Мотивация
В жизни каждого разработчика возникает момент, когда он сталкивается с задачами, где вопрос оптимизации крайне важен. А когда синтаксис языка и его паттерны уже изучены и отработаны на практике, хочется понять, как он работает "под капотом". Понимание спецификации языка ECMAScript — огромный шаг на пути к написанию высокооптимизированного кода. Задача документации — углубиться в недра спецификации и показать, из чего она состоит, как её читать и как устроены основные алгоритмы языка. В этом нам поможет, к сожалению, единственный официальный источник — ECMAScript Language Specification.
Как известно, JavaScript — язык сверхвысоких абстракций, и его спецификация написана в том же духе. Поэтому документация призвана, в том числе помочь совместно с рассказчиком разобраться в дебрях и абсолютных неочевидностях, встречающихся повсеместно. Например, оказывается, что строка кода ниже на языке JavaScript не имеет ничего общего с переменными, присваиванием и примитивами. Вместо этого поверх вышесказанного язык вводит свои термины и абстракции, с которыми позволяет нам работать.
var str = 'hello' // свяжем идентификатор str со строкой 'hello'
Для написания качественного кода знаний одной лишь спецификации недостаточно! Немаловажным будет изучить и работу оптимизирующего движка, например, V8 — самый успешный JavaScript движок современности.
🚀 Внесли серьёзный вклад
Здесь представлены люди2, которые немало поработали над тем, чтобы документация вышла в свет и в будущем становилась только лучше по мере выхода новых глав, исправлений и дополнений. Этот список будет пополняться в зависимости от вкладов в проект.

Информация собрана при поддержке3 таких проектов, как:






