50. Comprendre les Closures (Les fondamentaux)
Une Closure (Fermeture) est un concept crucial et souvent mal compris. Une closure est créée lorsqu'une fonction interne est définie à l'intérieur d'une fonction externe, et que la fonction interne se souvient et peut accéder aux variables de sa portée externe (lexicale), même après que la fonction externe a fini de s'exécuter.
Exemple : Créer un compteur
javascript function createCounter() { let count = 0; // C'est la variable enfermée
return function() { // La fonction interne (la closure)
count++; // Accède au 'count' de la portée externe
return count;
};
}
// Nous appelons la fonction externe une fois. Elle renvoie la fonction interne. const counter1 = createCounter(); const counter2 = createCounter();
console.log(counter1()); // Résultat : 1 console.log(counter1()); // Résultat : 2 (Elle se souvient de sa portée !)
console.log(counter2()); // Résultat : 1 (C'est une portée complètement séparée)
Pourquoi les closures sont-elles utiles ?
- Variables privées : Elles permettent aux fonctions d'avoir des données « privées » qui ne peuvent être consultées ou modifiées que via la fonction interne renvoyée.
- Persistance de l'état : Elles permettent aux données de persister entre les appels de fonction, ce qui est essentiel pour les modèles de programmation avancés et les hooks de React.