Închideri în JavaScript
Să studiem acum conceptul de închidere (closure). De fapt, sunteți deja familiarizați cu acest concept, rămâne doar să aflați terminologia corectă.
Deci, o închidere este o funcție împreună cu toate variabilele externe care îi sunt accesibile. Sau, cu alte cuvinte, o închidere este o funcție împreună cu mediul său lexical.
În JavaScript, cel mai adesea, spunând "închiderea unei funcții", se referă nu la funcția în sine, ci tocmai la variabilele sale externe. Dacă o funcție primește o variabilă din mediul său lexical, atunci se spune "variabila este luată din închidere".
Să ne amintim codul pe care l-am făcut în lecția precedentă:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // va afișa 1
În acest caz, se poate spune că funcția
func primește valoarea variabilei
num din închidere. De asemenea, se poate spune,
că funcția func stochează valoarea variabilei
num în închidere.