Closure

JavaScript 🟡 Mid

Dé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

Créer des closures dans une boucle var sans IIFE : toutes les callbacks partagent la même variable.
#core#interview#fondamental

En entretien

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

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

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

← → au clavier pour passer d'une fiche à l'autre