PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Как выполняется JS?

Основы языка

JavaScript выполняется движком (например, V8): код парсится в AST, компилируется в байт-код, интерпретируется и оптимизируется JIT-компиляцией, а асинхронность обеспечивает Event Loop.

Этапы выполнения в движке

  1. Парсинг — исходный код разбирается в AST (абстрактное синтаксическое дерево).
  2. Компиляция в байт-код — интерпретатор (Ignition в V8) генерирует байт-код.
  3. Выполнение — байт-код интерпретируется.
  4. JIT-оптимизация — «горячие» участки компилируются оптимизирующим компилятором (TurboFan) в машинный код; при неверных предположениях — деоптимизация.
Исходник → AST → байт-код → интерпретация + JIT

Модель выполнения

  • Call Stack — стек, где выполняется синхронный код (одна операция за раз, однопоточно).
  • Heap — куча для объектов.
  • Web API / окружение — таймеры, сеть, DOM вне движка.
  • Event Loop + очереди — микро- и макрозадачи для асинхронности.
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');
// 1, 4, 3, 2

Контекст выполнения

Каждый вызов создаёт контекст выполнения (переменные, this, ссылку на внешнее окружение) — они образуют стек.

Коротко для собеседования

Движок (V8): парсит код в AST → байт-код → интерпретирует → JIT-компилирует горячие участки в машинный код. Синхронный код идёт в call stack (однопоточно), асинхронный — через Web API и Event Loop (микро/макрозадачи). Каждый вызов — свой контекст выполнения.

Другие вопросы раздела