JavaScript'te Yerel Sayaç Değişkeni
Aşağıdaki kodu ele alalım:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // 1 yazdırır
test()(); // 1 yazdırır
Neden her zaman 1 sayısı yazdırılır?
Bunu anlamak için kodumuzu farklı şekilde
yazalım:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! ilk fonksiyon
func1(); // 1 yazdırır
let func2 = test(); //!! ikinci fonksiyon
func2(); // 1 yazdırır
Yani, test()() şeklindeki her test
fonksiyonu çağrısı, kendi kapanışına sahip kendi
fonksiyonunu oluşturur ve bu fonksiyonu hemen
çağırır.
Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();