> Что такое лексическое окружение в JavaScript и как оно работает (JavaScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: Арго

Стек: JavaScript

> Пример ответа

Лексическое окружение (Lexical Environment) - это внутренняя структура JavaScript, которая определяет, где и как хранятся переменные и функции, а также как они доступны во время выполнения кода. Каждый раз, когда выполняется функция, блок кода (например, if, for) или глобальный скрипт, создаётся новое лексическое окружение.

Оно состоит из двух частей:

  1. Environment Record - объект, хранящий все локальные переменные, объявленные с let, const, var, а также функции и параметры.

  2. Ссылка на внешнее лексическое окружение - позволяет обращаться к переменным из родительской области видимости (замыкания).

Как это работает на примере:

JAVASCRIPT
let a = 1; // глобальное окружение: { a: 1, внешнее: null }
function outer() {
let b = 2; // окружение outer: { b: 2, внешнее: глобальное }
function inner() {
let c = 3; // окружение inner: { c: 3, внешнее: outer }
console.log(a + b + c); // 6 - цепочка окружений
}
inner();
}
outer();

При вызове inner() JavaScript сначала ищет c в своём окружении, затем b - во внешнем (outer), затем a - в глобальном. Если переменная не найдена нигде - возникает ReferenceError. После завершения функции её лексическое окружение может быть уничтожено сборщиком мусора, если на него нет ссылок (например, из замыканий).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью