Zárásokon alapuló számláló JavaScriptben

Írjuk át a korábban megvizsgált kódot úgy, hogy a visszaadott függvény minden alkalommal eggyel növelje a num változó értékét:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++; // hozzáadunk egyet
  }
}

let func = test();

Így kiderül, hogy a func függvény minden hívása új értéket fog a konzolra kiírni:

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

let func = test();

func(); //kiírja 1-et
func(); //kiírja 2-t
func(); //kiírja 3-at
func(); //kiírja 4-et
func(); //kiírja 5-öt

Kiderül, hogy megvalósítottunk egy függvényhívás-számlálót, zárások használatával (pontosabban a num változót használva a függvényünk zárásából).

Vegye figyelembe, hogy a test függvény minden hívása új függvényt fog visszaadni, amelynek saját zárása lesz. Vagyis a különböző számlálók függetlenül fognak működni:

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

let func1 = test(); // első számláló
func1();  //kiírja 1-et
func1();  //kiírja 2-t

let func2 = test(); // második számláló
func2();  //kiírja 1-et
func2();  //kiírja 2-t

Kiderül, hogy ugyanaz a num változó különböző függvények esetén különböző értékkel rendelkezik!

Vagyis ha kétszer hívjuk a test függvényt, akkor a belőle kapott függvények függetlenül fognak működni, és ezen függvények mindegyike a saját független num változójával fog rendelkezni.

Задание 1

Önállóan, anélkül, hogy belenézne a kódomba, valósítson meg egy függvényhívás-számlálót, amely zárásokon alapul.

Задание 2

Legyen a függvény a zárásban egy 10 szám. Tegye úgy, hogy a függvény minden hívása csökkentse ezt a számot 1-gyel, és írja ki a csökkentett számot a konzolra.

Задание 3

Módosítsa az előző feladatot úgy, hogy a visszaszámlálás 0-ig érjen, majd minden további függvényhívás a konzolra írja azt az üzenetet, hogy a visszaszámlálás befejeződött.