Î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ă:

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