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:

javascriptfunction 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.