Čítač na uzávierkach v JavaScripte
Prepíšme kód, ktorý sme skúmali,
tak, aby vrátená funkcia zakaždým
zväčšila hodnotu premennej num
o jednu:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // pripočítame jednu
}
}
let func = test();
Výsledkom bude, že každé volanie funkcie func
vypíše do konzoly novú hodnotu:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //vypíše 1
func(); //vypíše 2
func(); //vypíše 3
func(); //vypíše 4
func(); //vypíše 5
Výsledkom je, že sme implementovali čítač volania
funkcií pomocou uzávierky (presnejšie pomocou
premennej num z uzávierky našej funkcie).
Majte na pamäti, že každé volanie funkcie test
vráti novú funkciu, ktorá bude mať
svoju vlastnú uzávierku. To znamená, že rôzne čítače
budú pracovať nezávisle:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // prvý čítač
func1(); //vypíše 1
func1(); //vypíše 2
let func2 = test(); // druhý čítač
func2(); //vypíše 1
func2(); //vypíše 2
Výsledkom je, že tá istá premenná num
pre rôzne funkcie bude mať rôznu hodnotu!
To znamená, že ak zavoláme funkciu test
dvakrát, funkcie z nej získane budú
pracovať nezávisle a každá z
týchto funkcií bude mať svoju nezávislú
premennú num.
Samostatne, bez nahliadania do môjho kódu, implementujte čítač volania funkcie, pracujúci na uzávierkach.
Nech funkcia v uzávierke uchováva číslo 10.
Zaistite, aby každé volanie funkcie
znížilo toto číslo o 1 a vypísalo
do konzoly znížené číslo.
Upravte predchádzajúcu úlohu tak, aby
odpočítavanie dosiahlo 0, a potom každé
nasledujúce volanie funkcie vypísalo do konzoly
správu, že odpočítavanie je ukončené.