Closure
JavaScript 🟡 MidDéfinition
Fonction qui capture et retient les variables de son scope parent même après que celui-ci a termine son exécution. C'est le mécanisme fondamental derrière les callbacks, modules et data privacy en JS.
Analogie
Un sac a dos que tu emportes en quittant la maison : même loin de chez toi, tu as toujours accès a ce que tu y as mis.
Exemple de code
function counter() {
let count = 0;
return {
increment: () => ++count,
get: () => count
};
}
const c = counter();
c.increment(); // 1
Cas d'usage
Encapsuler un état prive dans un module ou créer des fonctions factory avec configuration injectée.
Anti-pattern
Termes liés
En entretien
Explique-moi ce qu'est une closure.
C'est une fonction qui capture et retient les variables de son scope parent, même après que ce scope a terminé son exécution. C'est le mécanisme derrière les callbacks, les modules, et l'encapsulation de données privées.
Quel piège classique rencontre-t-on avec les closures dans une boucle ?
Créer des closures dans une boucle var sans IIFE fait que toutes les callbacks partagent la même variable au lieu de capturer sa valeur au moment de l'itération. Utiliser let ou une IIFE isole une variable par itération.
Donne un cas d'usage concret d'une closure.
Encapsuler un état privé dans un module, ou créer des fonctions factory dont la configuration est injectée une fois puis retenue. C'est ainsi qu'on simule des variables privées en JS sans classes.
Fiche mise à jour le 2026-09-27