Zárások és azonnali függvényhívás a JavaScriptben
Ahogy már tudod, lehetséges egy névtelen függvényt azonnal meghívni és a működés eredményét valamilyen változónak értékül adni:
let result = function() {
return '!';
}();
console.log(result); // kiírja '!'
Az azonnal meghívott függvényt gyakran zárójelek közé teszik ilyen esetben, bár erre nincs szükség. Ezt azért teszik, hogy azonnal látszódjon, a függvény azonnal meghívódik:
let result = (function() {
return '!';
})();
console.log(result); // kiírja '!'
Tegyük most fel, hogy az azonnal meghívott függvény eredménye egy névtelen függvény legyen:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // kiírja '!'
Tegyük úgy, hogy a visszaadott függvény
egy num változót tartalmazzon a zárásában:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Ha hozzáadunk egy num++-t, akkor a
func függvény kész számlálóvá válik:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // kiírja 1
func(); // kiírja 2
func(); // kiírja 3
func(); // kiírja 4
func(); // kiírja 5
Ne kukkolj az én kódomba, implementáld önállóan ugyanezt a számlálót.
Módosítsd a számláló működését úgy, hogy
5-ig számoljon, majd onnan kezdje előről
a számlálást.