Funkcijų leksinė aplinka JavaScript

Visi išoriniai, funkcijai prieinami kintamieji, vadinami jos leksine aplinka (LexicalEnvironment).

Šiame pavyzdyje funkcijai prieinami du kintamieji: num1 ir num2, kurie ir yra mūsų funkcijos leksinė aplinka:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // funkcija žino apie kintamuosius num1 ir num2
}

Pati leksinė aplinka yra tam tikras vidinis JavaScript objektas, pririštas prie mūsų funkcijos. Šiuo atveju ją galima pavaizduoti taip:

javascript{num1: 1, num2: 2}

Bet kurio leksinės aplinkos kintamojo reikšmė visada yra lygi dabartinei šio kintamojo reikšmei:

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

// Pakeiskime kintamąjį num1:
num1 = 123; // aplinka {num1: 123, num2: 2}

function func() {
  
}

Kai bandome pasiekti bet kurį kintamąjį funkcijos viduje, šis kintamasis pirmiausia ieškomas tarp funkcijos lokalųjų kintamųjų ir, jei tokio kintamojo ten nėra, tada jis ieškomas funkcijos leksinėje aplinkoje.