JavaScript да функцияларининг ташқи ўзгарувчиларга доступ олиши
Куйидаги кодни кўриб чиқайлик:
let num = 1; // ўзгарувчининг қийматини белгилаймиз
function func() {
console.log(num); // уни консолга чиқарамиз
}
func(); // функцияни чақирамиз
Ман илгари айтиб ўтгандимдек, ўзгарувчининг қиймати функциянинг аниқланишидан олдин бўлиши шарт эмас, асосийси, у функциянинг чақирилишидан олдин бўлса:
function func() {
console.log(num);
}
let num = 1;
func();
Аслича, бу ўзи ўша эмас. Бизнинг функциямиз
ўзи чақирилганидан олдин ҳам ўзгарувчининг қийматини
num билади:
let num = 1;
function func() {
console.log(num); // функция аллақачон num = 1 эканини билади
}
Мана мураккаброқ мисол:
let num = 1; // функция шу пайтда num = 1 эканини билади
function func() {
console.log(num);
}
num = 2; // функция шу пайтда num = 2 эканини билади
Функциянинг чақириқларини қўшайлик:
let num = 1; // функция шу пайтда num = 1 эканини билади
func(); // 1 ни чиқаради
function func() {
console.log(num);
}
func(); // 1 ни чиқаради
num = 2; // функция шу пайтда num = 2 эканини билади
func(); // 2 ни чиқаради
Яна бир бор: аслича функция ташқи ўзгарувчиларнинг қийматларини, ҳатто чақирилмаган ҳолда ҳам билади.