Você já aprendeu o que são closures no JavaScript: funções que “lembram” do escopo onde foram criadas.
Agora chegou a hora de ir além do conceito básico e entender:
por que closures são usadas em código profissional e arquiteturas reais.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender closures como mecanismo de estado
- Usar closures para encapsulamento
- Evitar armadilhas comuns
- Reconhecer closures em bibliotecas reais
- Usar closures de forma intencional
Relembrando o básico (rapidamente)
Uma closure acontece quando:
- Uma função é criada dentro de outra
- A função interna acessa variáveis externas
- Essas variáveis continuam acessíveis após a execução
function externa()
{
let mensagem = "Olá";
function interna()
{
console.log(mensagem);
}
return interna;
}
const fn = externa();
fn(); // Saída será: Olá
Closure ≠ truque
Closure não é um “efeito colateral”.
Ela é uma consequência direta de como:
- Escopos funcionam
- Funções são valores
- O Call Stack libera contextos
Caso 1 — Closure como estado privado
Closures permitem criar estado sem usar variáveis globais.
function criarContador()
{
let contador = 0;
return function ()
{
contador++;
return contador;
};
}
const contar = criarContador();
console.log(contar()); // Saída será 1
console.log(contar()); // Saída será 2
console.log(contar()); // Saída será 3
Aqui:
contadoré privado- Só a função interna pode acessá-lo
- O valor é preservado entre chamadas
Por que isso é poderoso?
Porque você consegue:
- Encapsular estado
- Evitar poluição global
- Controlar acesso aos dados
Caso 2 — Closure para configuração
Muito comum em código real:
function criarSaudacao(prefixo)
{
return function (nome)
{
console.log(prefixo + ", " + nome);
};
}
const ola = criarSaudacao("Olá");
const bomDia = criarSaudacao("Bom dia");
ola("Daniel"); // Saída será: Olá, Daniel
bomDia("Daniel"); // Saída será: Bom dia, Daniel
A função interna “lembra” do prefixo.
Caso 3 — Closure em loops (armadilha clássica)
Observe este código:
for (var i = 1; i <= 3; i++) { setTimeout(() => { console.log(i); }, 100); } console.log(i); // Saída será: // 4 // 4 // 4 Por quê?
varnão tem escopo de bloco- A closure captura a variável, não o valor
Correção com let
for (let i = 1; i <= 3; i++) { setTimeout(() => { console.log(i); }, 100); } console.log(i); // Saída será: // 1 // 2 // 3 let cria um novo escopo a cada iteração. Caso 4 — Closure como fábrica de funções
Closures são muito usadas para criar funções especializadas.
function multiplicador(fator)
{
return function (numero)
{
return numero * fator;
};
}
const dobrar = multiplicador(2);
const triplicar = multiplicador(3);
console.log(dobrar(5)); // Saída será 10
console.log(triplicar(5)); // Saída será 15
Closures em bibliotecas reais
Você usa closures o tempo todo sem perceber:
- Event listeners
- Hooks (React)
- Middlewares
- Factories
Quando tomar cuidado
- Closures podem manter dados vivos na memória
- Uso excessivo pode dificultar debug
- Use quando há real necessidade de estado persistente
Resumo da aula para nunca mais esquecer
- Closures preservam o escopo léxico
- Funções lembram do ambiente onde nasceram
- Closures permitem estado privado
- São base de módulos e abstrações
- Não são truque — são arquitetura
Na próxima aula, vamos para outro pilar do JavaScript moderno: Imutabilidade.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Galaxy Game
As primeiras máquinas de fliperama do mundo a utilizarem moedas, chamadas de Galaxy Game, custavam mais de 20 mil dólares para serem produzidas. Saiba mais sobre elas aqui.
Computadores de 1,5 tonelada
Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.
Playstation
O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.
Street Fighter 2
Street Fighter 2, lançado para o Super Nintendo no início dos anos 90, foi o principal responsável pelo aumento nas vendas deste console. Graças ao sucesso do título nos Arcades e à perfeita adaptação ao console, muitos consumidores adquiriram o SNES para jogarem o título em casa. Saiba mais.
Muitos aplicativos
Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.










