Uždarosios funkcijos ir funkcijos iškartinis vykdymas JavaScript
Kaip jau žinote, galima iškart iškviesti anoniminę funkciją ir priskirti jos vykdymo rezultatą kokiam nors kintamajam:
let result = function() {
return '!';
}();
console.log(result); // išves '!'
Dažnai funkciją, iškviečiamą iškart, tokiu atveju ima į apvalius skliaustus, nors to nėra būtina. Tai daroma tam, kad iš karto būtų matoma, jog funkcija kviečiama iškart:
let result = (function() {
return '!';
})();
console.log(result); // išves '!'
Tegu dabar iškart iškviestos funkcijos rezultatas yra anoniminė funkcija:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // išves '!'
Padarykime taip, kad grąžinama funkcija
saugotų uždarinyje kintamąjį num:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Jei pridėsime dar num++, tai funkcija
func taps paruoštu skaitikliu:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); //išves 1
func(); //išves 2
func(); //išves 3
func(); //išves 4
func(); //išves 5
Nežiūrėdami į mano kodą, patys įgyvendinkite tokį patį skaitiklį.
Modifikuokite skaitiklio veikimą taip, kad
jis skaičiuotų iki 5, o tada skaičiavimas prasidėtų
iš naujo.