Zárások a JavaScriptben

Most tanulmányozzuk a zárás (closure) fogalmát. Valójában Ön már ismeri ezt a fogalmat, már csak a helyes terminológiát kell megtanulnia.

Tehát a zárás egy függvény, valamennyi hozzá hozzáférhető külső változóval együtt. Vagy más szóval, a zárás egy függvény a saját lexikális környezetével együtt.

A JavaScriptben leggyakrabban, amikor egy "függvény zárásáról" beszélnek, nem magára a függvényre gondolnak, hanem pontosan a külső változóira. Ha egy függvény egy változót a saját lexikális környezetéből kap, akkor azt mondják, hogy "a változó a zárásból származik".

Emlékezzünk vissza a kódra, amit az előző leckében készítettünk:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
}

let func = test();
func(); // kiírja az 1-et

Ebben az esetben azt is mondhatjuk, hogy a func függvény a num változó értékét a zárásból kapja. Azt is mondhatjuk, hogy a func függvény a num változó értékét a zárásban tárolja.