Zatvaranja u JavaScript-u
Hajde sada da proučimo pojam zatvaranje (closure). Zapravo, već ste upoznati sa ovim pojmom, ostalo je samo da saznate tačnu terminologiju.
Dakle, zatvaranje je funkcija zajedno sa svim spoljnim promenljivima koje su joj dostupne. Ili, drugim rečima, zatvaranje je funkcija zajedno sa svojim leksičkim okruženjem.
U JavaScript-u najčešće, govoreći "zatvaranje funkcije", ne misle na samu tu funkciju, već upravo na njene spoljne promenljive. Ako neka funkcija dobija promenljivu iz svog leksičkog okruženja, onda se kaže "promenljiva se uzima iz zatvaranja".
Prisetimo se koda koji smo napravili u prethodnoj lekciji:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // ispisaće 1
U ovom slučaju se može reći da funkcija
func dobija vrednost promenljive
num iz zatvaranja. Takođe se može reći,
da funkcija func čuva vrednost promenljive
num u zatvaranju.