DEV Community

Jose Juarez Junior
Jose Juarez Junior

Posted on

JavaScript | Closure

Em JavaScript, um closure (ou clausura, em português) é um conceito fundamental que acontece quando uma função “lembra” do ambiente em que foi criada, mesmo depois de esse ambiente ter sido executado.

🧠 Conceito simples:

Um closure é:

“Uma função que tem acesso às variáveis do seu escopo léxico (ou seja, o escopo onde ela foi criada), mesmo depois que esse escopo saiu de execução.”

🔍 Exemplo clássico:

function criarContador() {
  let contador = 0; // variável do escopo da função criarContador

  return function() {
    contador++;              // função interna acessa variável externa
    console.log(contador);
  };
}

const contar = criarContador();

contar(); // 1
contar(); // 2
contar(); // 3
Enter fullscreen mode Exit fullscreen mode

O que está acontecendo aqui:

A função criarContador é executada uma vez.
Ela retorna uma nova função.
Mesmo após criarContador terminar sua execução,
a função retornada ainda tem acesso à variável contador.
Isso é o closure: a função “lembra” do ambiente onde foi criada.

💡 Por que isso é útil?

Closures são usados para:

  • Encapsulamento e privacidade de dados (como “variáveis privadas”);
  • Funções que mantêm estado entre chamadas;
  • Callbacks e event handlers;
  • Factories e funções geradoras de funções.

Top comments (0)