JavaScript
HTML
CSS
PHP
Coming Soon
Generatori
Varie & Old

Closures in JavaScript

Closures in JavaScript

Una closure si crea quando una funzione interna accede a variabili della funzione esterna anche dopo che quest’ultima è terminata. È un meccanismo fondamentale per l’incapsulamento e la gestione dello stato.

Come funziona una closure

In JavaScript, ogni funzione ricorda lo scope in cui è stata creata. Se una funzione interna utilizza variabili definite all’esterno, queste rimangono disponibili anche dopo che la funzione esterna ha restituito il controllo.


Schema funzionamento closure in JavaScript

Esempio base


Codice Esempio: Closure semplice

CODE: Javascript preleva codice
  1. function creaContatore() {
  2.   let conteggio = 0;
  3.   return function() {
  4.     conteggio++;
  5.     return conteggio;
  6.   }
  7. }
  8.  
  9. let contatore = creaContatore();
  10. console.log(contatore()); // 1
  11. console.log(contatore()); // 2

Spiegazione

La variabile conteggio appartiene allo scope della funzione creaContatore. La funzione interna, restituita come valore, mantiene un riferimento a quella variabile anche dopo che creaContatore è terminata. In questo modo possiamo mantenere uno stato privato.


Uso pratico delle closures

  • Creare variabili private
  • Implementare funzioni factory
  • Gestire configurazioni o dati senza esporli globalmente

Esempio con parametri


Codice Esempio: Closure con parametro

CODE: Javascript preleva codice
  1. function moltiplicatore(fattore) {
  2.   return function(numero) {
  3.     return numero * fattore;
  4.   }
  5. }
  6.  
  7. let perDue = moltiplicatore(2);
  8. console.log(perDue(5)); // 10

Note

Le closures sono spesso utilizzate in programmazione asincrona, gestione eventi e quando vogliamo che una funzione ricordi un contesto specifico.


I Cookie su questo sito:

Il nostro sito utilizza cookie e altre tecnologie in modo tale che sia noi, sia i nostri partner, possiamo ricordarci di te e capire come tu e gli altri visitatori utilizzate il nostro sito. Qui puoi trovare ulteriori informazioni sui cookie e le altre tecnologie. Chiudendo questo banner o continuando la navigazione acconsenti all'uso dei cookie. Acconsento Info Cookies