Найти тему
CodeSnack

🔍 JavaScript Перекус: Лексическое окружение (Lexical Environment) — как это работает?

Лексическое окружение (Lexical Environment) — это специальная структура, которая создается при каждом вызове функции или выполнении блока кода. Она хранит все переменные и функции, доступные в текущем контексте выполнения.

Каждая функция "помнит" своё лексическое окружение, то есть то место в коде, где она была создана. Именно благодаря этому функции могут получать доступ к переменным не только из своего блока, но и из родительских блоков, где они были объявлены.

💡 Пример:

Пример работы javascript лексического окружения (lexical environment)
Пример работы javascript лексического окружения (lexical environment)

👀 Что происходит?

При вызове outer() создается своё лексическое окружение, которое хранит outerVar.
Функция inner() также создает своё окружение с переменной innerVar.
Однако inner() может "видеть" и использовать переменные из внешнего окружения (в данном случае outerVar), а вот наоборот не работает — внешняя функция не имеет доступа к переменным внутренней.

⚡️ Это и есть суть лексического окружения: доступ к переменным определяется тем местом, где функция была объявлена, а не вызвана!