Parece simples até o entrevistador perguntar "why?". Abaixo, uma estrutura de resposta que dá conta do follow-up.
A resposta, como você fala na entrevista
A closure is a function that REMEMBERS the variables from the scope where it was CREATED, even when it runs somewhere else later.
function counter() {
let count = 0;
return () => ++count; // this inner function "closes over" count
}
const inc = counter();
inc(); // 1
inc(); // 2 — count survived because the closure kept it alive
Classic trap:
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 0); // prints 3, 3, 3
}All three callbacks point at the SAME var i in memory. Using let fixes it, because each iteration creates its own i.
Pegadinha clássica
Essa pergunta tem uma armadilha que derruba muita gente em entrevista. Ela está marcada na resposta acima: vale reler antes de treinar.
Ler é o primeiro passo. No app, essa pergunta vira flashcard com repetição espaçada, e o módulo tem quiz e simulado para testar o que ficou.
Treinar essa pergunta no app