Lexikální prostředí funkcí v JavaScriptu

Všechny externí, funkci dostupné proměnné, se nazývají její lexikální prostředí (LexicalEnvironment).

V následujícím příkladu jsou funkci dostupné dvě proměnné: num1 a num2, které představují lexikální prostředí naší funkce:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // funkce zná proměnné num1 a num2
}

Samotné lexikální prostředí představuje jakýsi vnitřní objekt JavaScriptu, připojený k naší funkci. V tomto případě jej lze znázornit následovně:

javascript{num1: 1, num2: 2}

Hodnota jakékoli proměnné lexikálního prostředí se vždy rovná aktuální hodnotě této proměnné:

javascriptlet num1 = 1; // prostředí {num1: 1}
let num2 = 2; // prostředí {num1: 1, num2: 2}

// Změníme proměnnou num1:
num1 = 123; // prostředí {num1: 123, num2: 2}

function func() {
  
}

Když se pokusíme o přístup k jakékoli proměnné uvnitř funkce, tato proměnná se nejprve hledá mezi lokálními proměnnými funkce a pokud tam taková proměnná není, hlídá se v lexikálním prostředí funkce.