Qaysi o'zgaruvchilar mavjud?
Quyidagi makeWorker funktsiyasi boshqa funktsiya yaratadi va uni qaytaradi. Oâsha yangi funktsiya boshqa joydan chaqirilishi mumkin.
U oâzining yaratilgan joyidagi tashqi oâzgaruvchilarga, yoki chaqirilgan joyidagiga, yoki ikkala joyidagiga ham kirish huquqiga ega boâladimi?
function makeWorker() {
let name = "Pete";
return function () {
alert(name);
};
}
let name = "John";
// funktsiya yaratish
let work = makeWorker();
// uni chaqirish
work(); // nima ko'rsatadi?
Qaysi qiymatni koârsatadi? âPeteâ yoki âJohnâ?
Javob: Pit.
Quyidagi koddagi âwork()â funksiyasi tashqi leksik muhit havolasi orqali kelib chiqqan joydan ânomâ oladi:
Demak, natija bu erda "Pit".
Ammo agar makeWorker() da let name boâlmasa, qidiruv tashqariga chiqib, yuqoridagi zanjirdan koârib turganimizdek global oâzgaruvchini oladi. Bunday holda, natija âJonâ boâladi.