Zaprtja v JavaScript
Poglejmo si zdaj pojem zaprtje (closure). Pravzaprav ste že seznanjeni s tem pojmom, preostane le še spoznati pravo terminologijo.
Torej, zaprtje je funkcija skupaj z vsemi zunanjimi spremenljivkami, ki so ji dostopne. Ali, drugače povedano, zaprtje je funkcija skupaj s svojim leksičnim okoljem.
V JavaScriptu pogosto, ko rečejo "zaprtje funkcije", ne mislijo na samo to funkcijo, ampak ravno na njene zunanje spremenljivke. Če pa katera funkcija dobi spremenljivko iz svojega leksičnega okolja, potem rečejo "spremenljivka je vzeta iz zaprtja".
Spomnimo se kode, ki smo jo naredili v prejšnji lekciji:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // izpiše 1
V tem primeru lahko rečemo, da funkcija
func dobi vrednost spremenljivke
num iz zaprtja. Prav tako lahko rečemo,
da funkcija func shrani vrednost spremenljivke
num v zaprtju.