Leksičko okruženje funkcija u JavaScript-u

Sve spoljne, funkciji dostupne promenljive, zovu se njeno leksičko okruženje (LexicalEnvironment).

U sledećem primeru funkciji su dostupne dve promenljive: num1 i num2, koje i jesu leksičko okruženje naše funkcije:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // funkcija zna za promenljive num1 i num2
}

Samo leksičko okruženje predstavlja neki unutrašnji objekat JavaScript-a, pridružen našoj funkciji. U ovom slučaju može se predstaviti u sledećem obliku:

javascript{num1: 1, num2: 2}

Vrednost bilo koje promenljive leksičkog okruženja uvek je jednaka trenutnoj vrednosti te promenljive:

javascriptlet num1 = 1; // okruženje {num1: 1}
let num2 = 2; // okruženje {num1: 1, num2: 2}

// Promenimo promenljivu num1:
num1 = 123; // okruženje {num1: 123, num2: 2}

function func() {
  
}

Kada pokušamo da pristupimo bilo kojoj promenljivoj unutar funkcije, ta promenljiva se prvo traži među lokalnim promenljivim funkcije i, ako takve promenljive tamo nema, onda se traži u leksičkom okruženju funkcije.