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
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)