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

Функция ичида бирор ўзгарувчига мурожаат қилганда, аввал бу ўзгарувчи функциянинг локал ўзгарувчилари орасида изланади ва, агар у ерда бундай ўзгарувчи бўлмаса, у ҳолда функциянинг лексик муҳитида изланади.