Avatar ·

Comment fonctionnent les fermetures (Closures) en JavaScript ? Expliquez avec un exemple simple

Bonjour à tous ! Je viens de commencer à apprendre JavaScript et je n'arrive pas à comprendre le sujet des fermetures (closures). J'ai lu différents articles, mais je suis toujours confus.\n\nPar exemple, voici un code :\n\n
function counter() {\n    let count = 0;\n    return function() {\n        count++;\n        return count;\n    };\n}\n\nconst myCounter = counter();\nconsole.log(myCounter()); // 1\nconsole.log(myCounter()); // 2\nconsole.log(myCounter()); // 3
\n\nPourquoi la variable count n'est-elle pas réinitialisée à chaque fois ? Pourtant, la fonction counter() a déjà terminé son exécution, mais nous pouvons toujours modifier sa variable interne. Je m'attendais à ce qu'après le premier appel de myCounter(), la variable count soit détruite, car elle est déclarée à l'intérieur de la fonction.\n\nEt une autre question : à quoi servent les fermetures en général ? Dans quelles situations réelles sont-elles utiles ?