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:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction 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.

Задание 1

Benim koduma bakmadan, kendi başınıza kapanışlar kullanarak çalışan bir fonksiyon çağrı sayacı gerçekleştirin.

Задание 2

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.

Задание 3

Ö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.