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?

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!


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.


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.


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.


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.