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.

Esempio base
Codice Esempio: Closure semplice

function creaContatore() {
let conteggio = 0;
return function() {
conteggio++;
return conteggio;
}
}
let contatore = creaContatore();
console.log(contatore()); // 1
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

function moltiplicatore(fattore) {
return function(numero) {
return numero * fattore;
}
}
let perDue = moltiplicatore(2);
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.