Лексичкото опкружување на функции во JavaScript
Сите надворешни, достапни променливи на функцијата, се нарекуваат нејзино лексичко опкружување (LexicalEnvironment).
Во следниот пример на функциите им се достапни две
променливи: num1 и num2, кои
и се лексичкото опкружување на нашата функција:
let num1 = 1;
let num2 = 2;
function func() {
// функцијата знае за променливите num1 и num2
}
Самото лексичко опкружување претставува некој внатрешен објект на JavaScript, врзан за нашата функција. Во овој случај, може да се претстави на следниов начин:
{num1: 1, num2: 2}
Вредноста на која било променлива од лексичкото опкружување секогаш е еднаква на тековната вредност на таа променлива:
let num1 = 1; // опкружување {num1: 1}
let num2 = 2; // опкружување {num1: 1, num2: 2}
// Да ја промениме променливата num1:
num1 = 123; // опкружување {num1: 123, num2: 2}
function func() {
}
Кога се обидуваме да пристапиме до која било променлива внатре во функцијата, прво се бара таа променлива помеѓу локалните променливи на функцијата и, ако таму нема таква променлива, тогаш се бара во лексичкото опкружување на функцијата.