JavaScript функцияларының лексикалық қоршаған ортасы

Функцияға қолжетімді барлық сыртқы айнымалылар оның лексикалық қоршаған ортасы деп аталады (LexicalEnvironment).

Келесі мысалда функцияға екі айнымалы қолжетімді: num1 және num2, бұл біздің функциямыздың лексикалық қоршаған ортасы болып табылады:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // функция num1 және num2 айнымалыларын біледі
}

Лексикалық қоршаған ортаның өзі біздің функциямызға байланысты JavaScript-тің қандай да бір ішкі нысанын білдіреді. Бұл жағдайда оны келесі түрде елестетуге болады:

javascript{num1: 1, num2: 2}

Лексикалық қоршаған ортаның кез келген айнымалысының мәні әрқашан сол айнымалының ағымдағы мәніне тең:

javascriptlet num1 = 1; // қоршаған орта {num1: 1}
let num2 = 2; // қоршаған орта {num1: 1, num2: 2}

// num1 айнымалысын өзгертейік:
num1 = 123; // қоршаған орта {num1: 123, num2: 2}

function func() {
  
}

Функция ішінде қандай да бір айнымалыға жетуге тырған кезде, бұл айнымалы алдымен функцияның жергілікті айнымалыларының арасынан ізделеді және егер ондай айнымалы болмаса, онда функцияның лексикалық қоршаған ортасынан ізделеді.