Язык, движок и среда исполнения
Чем отличаются правила JavaScript, реализация языка и окружение программы.
JavaScript — язык программирования. Чтобы понять, как работает программа, разделим три понятия: правила языка, движок и среду исполнения.
ECMAScript: правила языка
Основные правила JavaScript описаны в спецификации ECMAScript — ECMA-262. Она определяет синтаксис и поведение языка: как объявляются переменные, вызываются функции, работают объекты и операторы.
Спецификация описывает, что должна делать программа. Она не требует определённого интерпретатора или компилятора.
Движок: реализация языка
Движок JavaScript — программа, которая реализует эти правила: подготавливает и исполняет код, управляет объектами и памятью. CPU выполняет машинные инструкции; движок организует выполнение JavaScript через интерпретацию или компиляцию.
B8101110002A00101010000000000000000000000000000000mov eax, 42Записать число 42 в регистр EAX процессора.
Реальная кодировка инструкции MOV, выбранная для примера. Это не результат компиляции JavaScript в V8. Intel · MOV · том 2B, стр. 4-35.
V8 — один из таких движков. JavaScriptCore и SpiderMonkey — другие реализации того же языка.
Runtime: среда исполнения
Runtime — окружение, в которое встроен движок. Среда организует запуск программы и предоставляет дополнительные API.
Браузер предоставляет DOM, canvas и таймеры. Node.js — другая среда исполнения: она также использует V8, но предоставляет свой набор API, например для работы с файлами.
const player = { hp: 100 }; // Language values and objects
setTimeout(() => player.hp -= 10, 100); // Host timer API
Создание объекта и изменение hp подчиняются правилам языка. setTimeout предоставляет среда исполнения. Когда наступает время вызова, JavaScript-код callback выполняет движок.
Правила языка
DOM, canvas, таймеры
Разбор и выполнение JavaScript, управление памятью