Como funcionam as closures em JavaScript? Explique com um exemplo simples
Olá a todos! Comecei a estudar JavaScript e não consigo entender o tema das closures. Li vários artigos, mas ainda fico confuso.\n\nPor exemplo, aqui está um código:\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\nPor que a variável count não é reiniciada toda vez? Afinal, a função counter() já terminou sua execução, mas ainda podemos modificar sua variável interna. Eu esperava que após a primeira chamada de myCounter() a variável count fosse destruída, já que foi declarada dentro da função.\n\nE outra pergunta: para que servem as closures? Em quais situações reais elas são úteis?