Closures v JavaScriptu
Pojďme se nyní seznámit s pojmem closure (closure). Ve skutečnosti jste s tímto pojmem již obeznámeni, zbývá pouze poznat správnou terminologii.
Takže, closure je funkce spolu se všemi vnějšími proměnnými, které jsou jí přístupné. Nebo, jinými slovy, closure je funkce spolu se svým lexikálním prostředím.
V JavaScriptu nejčastěji, když se řekne "closure funkce", nemyslí se tím samotná funkce, ale právě její vnější proměnné. Pokud nějaká funkce získá proměnnou ze svého lexikálního prostředí, říká se "proměnná je brána z closure".
Připomeňme si kód, který jsme vytvořili v předchozí lekci:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // vypíše 1
V tomto případě lze říci, že funkce
func získává hodnotu proměnné
num z closure. Také lze říci,
že funkce func ukládá hodnotu proměnné
num v closure.