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() {
  
}

Функциянын ичинде каалаган өзгөрмөгө кайрылганыбызда, ал өзгөрмө алгач функциянын жергиликтүү өзгөрмөлөрүнүн арасынан издөөлөнөт. Эгер андай өзгөрмө табылбаса, анда функциянын лексикалык айланасынан изделет.