Uzávěry a okamžité volanie funkcie v JavaScripte
Ako už viete, anonymnú funkciu je možné zavolať okamžite a výsledok jej práce priradiť nejakej premennej:
let result = function() {
return '!';
}();
console.log(result); // vypíše '!'
Funkciu, ktorá sa volá okamžite, sa v takomto prípade často berie do okrúhlych zátvoriek, hoci to nie je nutné. Robí sa to preto, aby bolo hneď vidieť, že funkcia sa volá na mieste:
let result = (function() {
return '!';
})();
console.log(result); // vypíše '!'
Nech je teraz výsledkom okamžite volanej funkcie anonymná funkcia:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // vypíše '!'
Urobme to tak, aby vrátená funkcia
ukladala v uzávěre premennú num:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Ak pridáme ešte num++, funkcia
func sa stane hotovým počítadlom:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // vypíše 1
func(); // vypíše 2
func(); // vypíše 3
func(); // vypíše 4
func(); // vypíše 5
Bez nahliadania do môjho kódu samostatne implementujte také isté počítadlo.
Upravte prácu počítadla tak, aby
počítalo do 5 a potom sa počítanie začalo
odznova.