Comment fonctionnent les closures en JavaScript ? Expliquez avec des exemples
Bonjour à tous ! Je viens de commencer à apprendre JavaScript et je n'arrive pas à comprendre le sujet des closures. J'ai lu beaucoup d'articles, mais je suis toujours confus. \n\nVoici un exemple qui me trouble. Je crée une fonction qui retourne une autre fonction :\n\n```javascript\nfunction createCounter() {\n let count = 0;\n return function() {\n count++;\n return count;\n };\n}\n\nconst counter1 = createCounter();\nconst counter2 = createCounter();\n\nconsole.log(counter1()); // 1\nconsole.log(counter1()); // 2\nconsole.log(counter2()); // 1 — pourquoi pas 3 ?\n```\n\nPourquoi `counter1` et `counter2` se comportent-ils comme des compteurs séparés ? Je pensais que la variable `count` serait partagée. Et comment JavaScript "se souvient-il" de la valeur de `count` après que la fonction `createCounter` a terminé son exécution ? Normalement, les variables locales sont...