Funktsioonide leksikaalne keskkond JavaScriptis

Kõik funktsioonile kättesaadavad välised muutujad kutsutakse selle leksikaalseks keskkonnaks (LexicalEnvironment).

Järgmises näites on funktsioonile kättesaadavad kaks muutujat: num1 ja num2, mis ongi meie funktsiooni leksikaalne keskkond:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // funktsioon teab muutujatest num1 ja num2
}

Leksikaalne keskkond ise on mingisugune JavaScripti sisemine objekt, mis on seotud meie funktsiooniga. Sel juhul võib seda esitada järgmisel kujul:

javascript{num1: 1, num2: 2}

Leksikaalse keskkonna mis tahes muutuja väärtus on alati võrdne selle muutuja praeguse väärtusega:

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

// Muudame muutujat num1:
num1 = 123; // keskkond {num1: 123, num2: 2}

function func() {
  
}

Kui me püüame funktsiooni sees juurdepääsu mõnele muutujale, otsitakse seda muutujat kõigepealt funktsiooni lokaalsete muutujate seas ja kui sellist muutujat seal pole, siis otsitakse seda funktsiooni leksikaalsest keskkonnast.