Una closure è semplicemente una funzione che continua ad avere accesso alle variabili del contesto in cui è stata creata, anche dopo che quel contesto è terminato.
function contatore() {
let count = 0;
return function () {
count += 1;
return count;
};
}
const next = contatore();
next(); // 1
next(); // 2 <- 'count' sopravvive tra le chiamate
La funzione interna "chiude" sopra la variabile count: non è globale, non si azzera, resta privata. È il meccanismo alla base di stato incapsulato, moduli e hook di React.
Se ti sei mai chiesto perché useState funziona, la risposta breve è: closure.