Nas últimas aulas, aprendemos recursos modernos do JavaScript, como Arrow Functions, parâmetros default e Rest Parameters, que tornam nossas funções mais flexíveis e elegantes.
Agora chegou a hora de entender um dos conceitos mais importantes — e inicialmente mais misteriosos — do JavaScript: as Closures.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o que é uma Closure
- Ver Closures funcionando na prática
- Compreender como funções “lembram” do seu contexto
- Usar Closures para proteger dados
- Reconhecer situações reais onde Closures são usadas
O conceito por trás das Closures
Em JavaScript, funções podem ser criadas dentro de outras funções. Quando isso acontece, a função interna mantém acesso às variáveis da função externa, mesmo depois que a função externa já terminou de executar.
Esse comportamento é chamado de Closure.
Um primeiro exemplo simples
function externa()
{
let mensagem = "Olá, mundo!";
function interna() {
console.log(mensagem);
}
interna();
}
externa();
Aqui, a função interna consegue acessar a variável mensagem, mesmo ela estando fora do seu próprio escopo.
Closure acontecendo de verdade
Agora vamos a um exemplo onde a Closure fica mais clara. A função externa retorna a função interna:
function criarSaudacao(nome)
{
return function ()
{
console.log("Olá, " + nome);
};
}
const saudacaoDaniel = criarSaudacao("Daniel");
saudacaoDaniel();
Mesmo depois de criarSaudacao ter terminado sua execução, a função retornada ainda lembra do valor de nome.
Visualizando o retorno
const saudacaoMaria = criarSaudacao("Maria");
saudacaoMaria();
// Saída será "Olá, Maria" Closures para proteger dados
Closures são muito usadas para criar variáveis “privadas”, que não podem ser acessadas diretamente de fora.
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
A variável contador não pode ser acessada diretamente. Ela só existe dentro da Closure criada pela função.
Por que Closures são tão importantes?
- Permitem criar dados privados
- Ajudam a manter o código organizado
- São muito usadas em eventos, callbacks e módulos
- Fazem parte do funcionamento interno do JavaScript
Closure NÃO é uma variável local. Closure NÃO é uma função interna. Closure é a função MAIS o seu estado preservado.
Quando NÃO usar closure:
- Se você só precisa de um valor momentâneo
- Se o dado não precisa sobreviver
- Se não há função interna usando aquele valor
Resumo da aula para nunca mais esquecer
- Closures acontecem quando uma função acessa o escopo de outra
- A função interna mantém acesso às variáveis externas
- Closures permitem criar dados privados
- São um conceito fundamental do JavaScript
- Closures permitem encapsular estado sem usar variáveis globais
Na próxima aula, vamos aplicar Closures em situações reais, como eventos e módulos simples.
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?
Senhas
Digitar senhas em computadores de uso coletivo é extremamente perigoso, pois além de softwares de monitoramento, existem dispositivos de hardware que podem capturar suas senhas. Evite ao máximo acessar sites de bancos a partir destes computadores. Veja mais aqui.
Mortal Kombat - O Filme
O filme Mortal Kombat, inspirado no jogo de mesmo nome, faturou 23 milhões de dólares apenas no fim de semana de estreia nos EUA. Ainda sobre este título de sucesso, outra cifra que impressiona é o faturamento ao longo do primeiro ano: 1 bilhão de dólares no mundo todo.
Ultima Online
Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras
Asteroids
O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.
Recorde de patentes
A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.










