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
Se uma função “lembra” de variáveis mesmo depois de ser executada, você está diante de uma Closure.
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
👉 variável local é suficiente (e mais simples).

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.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

O épico jogo River Raid, do Atari, foi desenhado e boa parte de sua programação foi feita por uma mulher: Carol Shaw, uma excelente programadora e funcionária da Activision em 1982. Saiba mais sobre a história deste incrível jogo, aqui.


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.


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.


A Máquina de Pascal, criada em 1642 pelo filósofo, físico e matemático francês Blaise Pascal, é reconhecida como o primeiro computador do mundo e ele foi criado com o objetivo de calcular impostos. Saiba mais.


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.