JavaScript-də Sayğacın Lokal Dəyişəni

Aşağıdakı kodu nəzərdən keçirək:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  };
}

test()(); // 1 çap edəcək
test()(); // 1 çap edəcək

Nə üçün həmişə 1 rəqəmi çap olunur? Bunu başa düşmək üçün kodumuzu başqa cür yazaq:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  };
};

let func1 = test(); //!! birinci funksiya
func1();  //1 çap edəcək

let func2 = test(); //!! ikinci funksiya
func2();  //1 çap edəcək

Yəni, test funksiyasının hər bir çağırışı bununla: test()(), öz qapalılığı olan öz funksiyasını yaradır və dərhal həmin funksiyanı çağırır.

Задание 1

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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

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

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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

let test = func;

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