Funktioners leksikalske omgivelse i JavaScript

Alle eksterne, tilgængelige funktionsvariabler kaldes dens leksikalske omgivelse (LexicalEnvironment).

I følgende eksempel er der to variabler tilgængelige for funktionen: num1 og num2, som udgør den leksikalske omgivelse for vores funktion:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // funktionen kender til variablerne num1 og num2
}

Selve den leksikalske omgivelse repræsenterer et eller andet internt JavaScript-objekt, der er bundet til vores funktion. I dette tilfælde kan den repræsenteres på følgende måde:

javascript{num1: 1, num2: 2}

Værdien af enhver variabel i den leksikalske omgivelse er altid lig med den aktuelle værdi af denne variabel:

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

// Lad os ændre variablen num1:
num1 = 123; // omgivelse {num1: 123, num2: 2}

function func() {
  
}

Når vi forsøger at få adgang til en hvilken som helst variabel inde i funktionen, søges denne variabel først blandt funktionens lokale variabler og, hvis der ikke er en sådan variabel der, søges den i funktionens leksikalske omgivelse.