Sobes.tech
Back to questions
Middle
5

Расскажи про механизм поиска переменных в JavaScript (scope chain / лексическое окружение)

Companies where asked
ВШЭ

Answer from AI

sobes.tech AI

В JavaScript поиск переменных происходит через цепочку областей видимости (scope chain), которая формируется лексическим окружением (lexical environment).

Лексическое окружение — это структура, которая содержит привязки идентификаторов (переменных, функций) к их значениям и ссылку на внешнее лексическое окружение.

Когда интерпретатор встречает обращение к переменной, он ищет её сначала в текущем лексическом окружении. Если переменная не найдена, поиск продолжается во внешнем окружении, и так далее, пока не достигнет глобального окружения. Если переменная не найдена нигде — будет ошибка.

Пример:

function outer() {
  let a = 1;
  function inner() {
    let b = 2;
    console.log(a + b); // ищет b в inner, a во внешнем outer
  }
  inner();
}
outer();

Здесь inner имеет доступ к своей переменной b и к переменной a из внешнего окружения outer благодаря цепочке областей видимости.