Leksično okolje funkcij v JavaScript

Vse zunanje spremenljivke, dostopne funkciji, se imenujejo njeno leksično okolje (LexicalEnvironment).

V naslednjem primeru so funkciji dostopni dve spremenljivki: num1 in num2, ki sta leksično okolje naše funkcije:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // funkcija ve za spremenljivki num1 in num2
}

Samo leksično okolje predstavlja nek notranji objekt JavaScript, povezan z našo funkcijo. V tem primeru ga lahko predstavimo v naslednji obliki:

javascript{num1: 1, num2: 2}

Vrednost katere koli spremenljivke leksičnega okolja je vedno enaka trenutni vrednosti te spremenljivke:

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

// Spremenimo spremenljivko num1:
num1 = 123; // okolje {num1: 123, num2: 2}

function func() {
  
}

Ko poskušamo dostopiti do katere koli spremenljivke znotraj funkcije, se ta spremenljivka najprej poišče med lokalnimi spremenljivkami funkcije in, če takšne spremenljivke tam ni, se poišče v leksičnem okolju funkcije.