Zaprtja in takojšnji klic funkcije v JavaScript
Kot že veste, je mogoče anonimno funkcijo poklicati na mestu in rezultat njenega delovanja dodeliti neki spremenljivki:
let result = function() {
return '!';
}();
console.log(result); // izpiše '!'
Funkcijo, ki se kliče na mestu, v takšnem primeru pogosto postavijo v okrogle oklepaje, čeprav temu ni nujno potrebe. To storijo zato, da je takoj videti, da se funkcija kliče na mestu:
let result = (function() {
return '!';
})();
console.log(result); // izpiše '!'
Naj bo zdaj rezultat takoj poklicane funkcije anonimna funkcija:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // izpiše '!'
Naredimo tako, da vrnjena funkcija
v zaprtju hrani spremenljivko num:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Če dodamo še num++, bo funkcija
func postal končen števec:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // izpiše 1
func(); // izpiše 2
func(); // izpiše 3
func(); // izpiše 4
func(); // izpiše 5
Ne zaganjajoč se v mojo kodo, samostojno implementirajte takšen števec.
Modificirajte delovanje števca tako, da
šteje do 5, nato pa se odštevanje začne znova.