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