# Лексическое окружение функций в JavaScript

Все внешние, доступные функции переменные, называются ее лексическим окружением (англ. LexicalEnvironment).

В следующем примере функции доступны две переменные: `num1` и `num2`, которые и являются лексическим окружением нашей функции:

`let num1 = 1; let num2 = 2; function func() { // функция знает про переменные num1 и num2 }`

Само лексическое окружение представляет собой некий внутренний объект JavaScript, привязанный к нашей функции. В данном случае его можно представить в следующем виде:

`{num1: 1, num2: 2}`

Значение любой переменной лексического окружения всегда равно текущему значению этой переменной:

`let num1 = 1; // окружение {num1: 1} let num2 = 2; // окружение {num1: 1, num2: 2} // Поменяем переменную num1: num1 = 123; // окружение {num1: 123, num2: 2} function func() { }`

Когда мы пытаемся обратится к какой-либо переменной внутри функции, эта переменная вначале ищется среди локальных переменных функции и, если такой переменной там нет, то ищется в лексическом окружении функции.

← →
↑
en ru