Что такое контекст выполнения?
Объекты и прототипы
Контекст выполнения (execution context) — это среда, в которой выполняется код: она содержит переменные, значение this и ссылку на внешнее окружение.
Что содержит
- Variable Environment / Lexical Environment — переменные, функции, параметры.
- this — значение контекста (
this). - Ссылка на внешнее окружение — для поиска переменных (scope chain).
Виды контекстов
- Глобальный — создаётся при запуске скрипта (один).
- Функциональный — создаётся при каждом вызове функции.
- eval — внутри
eval(редко).
Стек контекстов (call stack)
При вызове функции создаётся новый контекст и кладётся в стек; по завершении — снимается:
function a() { b(); }
function b() { console.log('в b'); }
a();
// Стек: global → a → b → (b снимается) → (a снимается)Две фазы контекста
- Создание — hoisting: регистрируются переменные (
var→undefined,let/const→TDZ), функции, определяетсяthis. - Выполнение — код исполняется построчно.
Коротко для собеседования
Контекст выполнения — среда исполнения кода: переменные, this и ссылка на внешнее окружение. Виды: глобальный (один) и функциональный (на каждый вызов). Контексты образуют call stack. Проходит фазы создания (hoisting, this) и выполнения.