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?

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.


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!


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.


O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!


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.