Lokális számlálóváltozó JavaScriptben

Tekintsük a következő kódot:

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

test()(); // kiírja 1-et
test()(); // kiírja 1-et

Miért fog mindig a 1 számot kiírni? Hogy ezt megértsük, írjuk át a kódunkat másképp:

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

let func1 = test(); //!! első függvény
func1();  //kiírja 1-et

let func2 = test(); //!! második függvény
func2();  //kiírja 1-et

Azaz a test függvény minden ilyen hívása: test()(), létrehoz egy saját függvényt a saját zárásával és azonnal meghívja ezt a függvényt.

Задание 1

Határozd meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

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

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

Határozd meg, kód futtatása nélkül, hogy mit ír ki a konzolra:

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

let test = func;

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