Расскажи про механизм поиска переменных в JavaScript (scope chain / лексическое окружение)
Ответ от нейросети
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 благодаря цепочке областей видимости.