JavaScript · Intermediário · Inglês · Técnico
closure
Função que mantém acesso às variáveis do escopo em que foi criada, mesmo depois que esse escopo terminou de executar. Permite estado privado e fábricas de funções.
Onde usar
Base de contadores, módulos, debounce e hooks do React. Em code review, closures em laços e listeners preocupam: podem capturar valor desatualizado ou manter objetos grandes vivos na memória.
Em código
function contador() {
let n = 0;
return () => ++n;
}
const c = contador();
c(); // 1
c(); // 2Exemplos
The counter works because of a closure over n.
O contador funciona por causa de uma closure sobre o n.
That closure keeps the whole array alive in memory.
Essa closure mantém o array inteiro vivo na memória.
Cuidado
Achar que a closure copia os valores; ela guarda referência às variáveis, então enxerga mudanças posteriores.
Sinônimos
fechamento
Origem
Do inglês closure, 'fechamento': a função fecha sobre as variáveis do ambiente onde nasceu.