JavaScript'te Kapanışlar Üzerinde Sayaç
Şimdi ele aldığımız kodu, döndürülen fonksiyonun
her seferinde num değişkeninin değerini
bir artırması şeklinde yeniden yazalım:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // bir ekliyoruz
}
}
let func = test();
Böylece, func fonksiyonunun her çağrılışı
konsola yeni bir değer yazdıracaktır:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //1 yazdırır
func(); //2 yazdırır
func(); //3 yazdırır
func(); //4 yazdırır
func(); //5 yazdırır
Görüldüğü gibi, bir kapanış (daha doğrusu
fonksiyonumuzun kapanışındaki num
değişkenini) kullanarak bir fonksiyon çağrısı
sayacı gerçekleştirdik.
Unutmayın, test fonksiyonunun her çağrılışı
kendi kapanışına sahip yeni bir fonksiyon döndürecektir.
Yani farklı sayaçlar bağımsız çalışacaktır:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // ilk sayaç
func1(); //1 yazdırır
func1(); //2 yazdırır
let func2 = test(); // ikinci sayaç
func2(); //1 yazdırır
func2(); //2 yazdırır
Sonuç olarak, aynı num değişkeni
farklı fonksiyonlar için farklı değerlere sahip olacak!
Yani, test fonksiyonunu iki kez çağırırsak,
ondan elde edilen fonksiyonlar bağımsız şekilde
çalışacak ve bu fonksiyonların her biri kendi
bağımsız num değişkenine sahip olacaktır.
Benim koduma bakmadan, kendi başınıza kapanışlar kullanarak çalışan bir fonksiyon çağrı sayacı gerçekleştirin.
Fonksiyonun kapanışında 10 sayısını saklasın.
Fonksiyonun her çağrılışında bu sayıyı 1
azaltmasını ve azaltılmış sayıyı konsola yazdırmasını
sağlayın.
Önceki görevi, geri sayım 0'a ulaştığında
ve sonraki her fonksiyon çağrısının konsola
geri sayımın tamamlandığını belirten bir mesaj
yazdırması şeklinde değiştirin.