Repaso
English
Frontend y webAvanzadoFE-48

¿Qué es un closure en JavaScript y qué registra esto?

function counter() {
  let n = 0;
  return () => ++n;
}
const c = counter();
c(); c();
console.log(c());

Opciones

  1. 3: la función interna recuerda su n exterior (Opción correcta)
  2. 0: cada llamada empieza de nuevo desde cero
  3. undefined: n no es visible fuera
  4. 1: solo la primera llamada cambia el valor de n

Respuesta

3: la función interna recuerda n de donde se creó

Por qué

Un closure es una función que conserva acceso a las variables del scope donde se creó, incluso después de que termine la función exterior.

counter() devuelve una arrow function que sigue viendo su n privado. Cada llamada incrementa la misma variable: 1, 2 y luego 3. Ningún código externo puede tocar n directamente (privacidad de datos).

Los closures hacen posibles los callbacks, los manejadores de eventos y los hooks de React.

Recuerda

Closure = función + variables recordadas.

Términos clave

Practica esta pregunta en Repaso