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.


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.


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!


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.


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.