JavaScript'te Yerel Sayaç Değişkeni

Aşağıdaki kodu ele alalım:

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

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

Задание 1

Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

func()();
func()();
func()();
Задание 2

Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

let test = func;

test()();
test()();
test()();