Domknięcia i natychmiastowe wywołanie funkcji w JavaScript
Jak już wiesz, możesz wywołać anonimową funkcję natychmiast i przypisać wynik jej działania do jakiejś zmiennej:
let result = function() {
return '!';
}();
console.log(result); // wyświetli '!'
Często funkcję wywoływaną natychmiast w takim przypadku umieszcza się w okrągłych nawiasach, chociaż nie jest to konieczne. Robi się to po to, aby od razu było widać, że funkcja jest wywoływana natychmiast:
let result = (function() {
return '!';
})();
console.log(result); // wyświetli '!'
Niech teraz wynikiem funkcji wywołanej natychmiast będzie funkcja anonimowa:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // wyświetli '!'
Zróbmy tak, aby zwracana funkcja
przechowywała w domknięciu zmienną num:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Jeśli dodamy jeszcze num++, to funkcja
func stanie się gotowym licznikiem:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); //wyświetli 1
func(); //wyświetli 2
func(); //wyświetli 3
func(); //wyświetli 4
func(); //wyświetli 5
Nie podglądając mojego kodu, samodzielnie zaimplementuj taki sam licznik.
Zmodyfikuj działanie licznika tak, aby
liczył do 5, a potem odliczanie zaczynało się
od nowa.