Lexikálne prostredie funkcií v JavaScripte

Všetky externé, funkcii dostupné premenné, sa nazývajú jej lexikálne prostredie (LexicalEnvironment).

V nasledujúcom príklade sú funkcii dostupné dve premenné: num1 a num2, ktoré tvoria lexikálne prostredie našej funkcie:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // funkcia pozná premenné num1 a num2
}

Samotné lexikálne prostredie predstavuje nejaký interný objekt JavaScriptu, priradený k našej funkcii. V tomto prípade ho môžeme znázorniť v nasledujúcej forme:

javascript{num1: 1, num2: 2}

Hodnota akejkoľvek premennej lexikálneho prostredia sa vždy rovná aktuálnej hodnote tejto premennej:

javascriptlet num1 = 1; // prostredie {num1: 1}
let num2 = 2; // prostredie {num1: 1, num2: 2}

// Zmeňme premennú num1:
num1 = 123; // prostredie {num1: 123, num2: 2}

function func() {
  
}

Keď sa pokúšame pristúpiť k akejkoľvek premennej vo vnútri funkcie, táto premenná sa najprv hľadá medzi lokálnymi premennými funkcie a ak sa tam taká premenná nenachádza, vyhľadáva sa v lexikálnom prostredí funkcie.