Guia de entrevista · JavaScript

What is a Closure?

do caderno de estudos · atualizado em 2 de outubro de 2026
Para quem vai encarar entrevista de JavaScript2 min

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