Uzávěry v JavaScripte
Poďme teraz študovať pojem uzávierka (closure). V skutočnosti ste s týmto pojmom už oboznámení, ostáva len spoznať správnu terminológiu.
Takže, uzávierka je funkcia spolu so všetkými vonkajšími premennými, ktoré sú jej prístupné. Alebo inými slovami, uzávierka je funkcia spolu so svojim lexikálnym prostredím.
V JavaScripte najčastejšie, keď hovoria "uzávierka funkcie", nemajú na mysli samotnú túto funkciu, ale práve jej vonkajšie premenné. Ak nejaká funkcia získava premennú zo svojho lexikálneho prostredia, tak hovoria "premenná sa berie z uzávierky".
Spomeňme si na kód, ktorý sme urobili v predchádzajúcej lekcii:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // vypíše 1
V tomto prípade sa dá povedať, že funkcia
func získava hodnotu premennej
num z uzávierky. Takisto sa dá povedať,
že funkcia func ukladá hodnotu premennej
num v uzávierke.