ExpertiDict

JavaScript · Intermediário · Inglês · Técnico

closure

/ˈkloʊʒɚ/substantivo

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(); // 2

Exemplos

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.

Veja também

Todos os termos de JavaScript