Desarrollador Frontend: pregunta de entrevista

¿Qué es un closure en JavaScript?

Un closure es una función junto con su entorno léxico. Conserva acceso a variables del scope donde se creó incluso después de que la función externa termine.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

Cada función en JavaScript captura las variables del ámbito donde se definió por referencia, no por valor. El binding capturado vive mientras vive el closure, así que una variable que sería recolectada sigue accesible, y un cambio posterior en ella es visible desde el closure. Es el mecanismo detrás de los módulos, la memoización, los handlers de eventos y de la mayoría de bugs con bucles y callbacks asíncronos.

Ejemplo

Un handler de clic puede cerrar sobre un id; cada handler necesita su propio binding para no usar por error un valor posterior del bucle. Con var en un for todos los handlers comparten un binding y leen el valor final; con let cada iteración crea un binding nuevo, así que el handler del tercer botón imprime 3 y no el final del bucle.

Errores frecuentes

  • Creer que un closure copia el valor en el momento de crearse.
  • Capturar un objeto grande en un callback de larga vida y provocar una fuga de memoria.
  • Explicar closures sin mencionar que la función externa puede haber terminado ya.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador Frontend