Лексическо окружение на функции в 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() {
}
Когато се опитаме да достъпим която и да е променлива вътре във функцията, тази променлива първо се търси сред локалните променливи на функцията и, ако такава променлива не бъде намерена там, се търси в лексическото окружение на функцията.