Licznik na domknięciach w JavaScript
Przepiszmy rozważany przez nas kod
tak, aby zwracana funkcja za każdym razem
zwiększała wartość zmiennej num
o jeden:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // dodajemy jeden
}
}
let func = test();
Okaże się, że każde wywołanie funkcji func
będzie wypisywać w konsoli nową wartość:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //wypisze 1
func(); //wypisze 2
func(); //wypisze 3
func(); //wypisze 4
func(); //wypisze 5
Okazuje się, że zaimplementowaliśmy licznik wywołań
funkcji, używając domknięcia (a dokładniej używając
zmiennej num z domknięcia naszej funkcji).
Pamiętaj, że każde wywołanie funkcji test
będzie zwracać nową funkcję, która
będzie miała swoje własne domknięcie. Oznacza to, że różne liczniki
będą działać niezależnie:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // pierwszy licznik
func1(); //wypisze 1
func1(); //wypisze 2
let func2 = test(); // drugi licznik
func2(); //wypisze 1
func2(); //wypisze 2
Okazuje się, że ta sama zmienna num
dla różnych funkcji będzie miała różne wartości!
Oznacza to, że jeśli wywołamy funkcję test
dwa razy, to otrzymane z niej funkcje będą
działać w sposób niezależny i każda z
tych funkcji będzie miała swoją niezależną
zmienną num.
Samodzielnie, bez podglądania w mój kod, zaimplementuj licznik wywołań funkcji, działający na domknięciach.
Niech funkcja w domknięciu przechowuje liczbę 10.
Sprawdź, aby każde wywołanie funkcji
zmniejszało tę liczbę o 1 i wypisywało
w konsoli zmniejszoną liczbę.
Zmodyfikuj poprzednie zadanie tak, aby
odliczanie dochodziło do 0, a następnie każde
kolejne wywołanie funkcji wypisywało w konsoli
komunikat o zakończeniu odliczania.