Ֆունկցիաների բառային միջավայրը 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() {
  
}

Երբ մենք փորձում ենք դիմել որևէ փոփոխականի ֆունկցիայի ներսում, այդ փոփոխականը նախ փնտրվում է ֆունկցիայի տեղական փոփոխականների մեջ և, եթե այնտեղ այդպիսի փոփոխական չկա, ապա այն փնտրվում է ֆունկցիայի բառային միջավայրում: