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?
Nintendo Wii
Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!
Música tema do Blanka
Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.
PDP-1
O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.
Space Invaders
A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.
Mega Man
A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.










