PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Из каких основных элементов состоит контекст?

Объекты и прототипы

Контекст выполнения состоит из основных элементов: лексического окружения (переменные), значения `this` и ссылки на внешнее окружение (для scope chain).

Основные элементы

Лексическое окружение (Lexical Environment)

Хранит переменные, функции и параметры текущей области видимости:

function fn(a) {
  let b = 2; // a и b — в лексическом окружении fn
}

Включает Environment Record (сами переменные) и ссылку на внешнее окружение.

Значение this

Определяется способом вызова (метод → объект, new → новый объект, и т. д.):

const obj = { method() { return this; } }; // this = obj

Ссылка на внешнее окружение

Связь с окружением, где код был объявлен — для поиска переменных по цепочке (scope chain):

function outer() {
  let x = 1;
  function inner() { return x; } // x найдётся через внешнюю ссылку
}

Две фазы создания контекста

  1. Создание (creation) — регистрация переменных (hoisting: var→undefined, let/const→TDZ, функции), определение this и внешней ссылки.
  2. Выполнение (execution) — построчное исполнение кода.

Виды контекстов

  • Глобальный — один, при запуске.
  • Функциональный — на каждый вызов (кладётся в call stack).

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

Контекст выполнения состоит из: лексического окружения (переменные, функции, параметры + ссылка на внешнее окружение), значения this (по способу вызова) и связи для scope chain. Проходит фазы создания (hoisting, this) и выполнения. Создаётся при вызове функции, кладётся в call stack.

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