Avatar ·

¿Cómo funcionan los closures en JavaScript? Explica con ejemplos

¡Hola a todos! Acabo de empezar a aprender JavaScript y no logro entender el tema de los closures. He leído muchos artículos, pero aún me confundo. Aquí hay un ejemplo que me desconcierta. Creo una función que devuelve otra función: ```javascript function createCounter() { let count = 0; return function() { count++; return count; }; } const counter1 = createCounter(); const counter2 = createCounter(); console.log(counter1()); // 1 console.log(counter1()); // 2 console.log(counter2()); // 1 — ¿por qué no 3? ``` ¿Por qué `counter1` y `counter2` se comportan como contadores separados? Pensé que la variable `count` sería compartida. ¿Y cómo JavaScript "recuerda" el valor de `count` después de que la función `createCounter` ha terminado su ejecución? Normalmente, las variables locales se destruyen al salir de la función. Explíquenme, por favor, el mecanismo de los closures en palabras simples. ¿Cómo almacenan referencias a las variables? ¿Y dónde puede ser útil esto en proyectos reales?