Até aqui, aprendemos a controlar tempo (assincronicidade) e estado (closures).

Agora vamos aprender a controlar algo ainda mais sutil:

a mudança de dados.

🎯 Objetivo da aula

Ao final desta aula, você será capaz de:

  • Entender o que é imutabilidade
  • Saber por que mutação causa bugs difíceis
  • Trabalhar com dados sem alterá-los
  • Reconhecer padrões imutáveis no JavaScript moderno
  • Escrever código mais previsível

O que é imutabilidade?

Imutabilidade significa:

não alterar um dado existente — criar um novo.

Ou seja:

  • Você não muda o original
  • Você cria uma nova versão

Mutação: o problema silencioso

Veja este exemplo:

 
  const usuario = 
  { 
    nome: "Daniel", idade: 30 
  };
  function fazerAniversario(pessoa) 
  {
    pessoa.idade++;
  }
  fazerAniversario(usuario);
  console.log(usuario.idade); // Saída será 31

O problema aqui não é o resultado.

O problema é:

  • Quem mudou o objeto?
  • Quando mudou?
  • Quem mais depende dele?
Mutação cria efeitos colaterais invisíveis.

Imutabilidade elimina esse problema

Agora a versão imutável:

 
  const usuario = { nome: "Daniel", idade: 30 };
  function fazerAniversario(pessoa) 
  {
    return 
    {
      ...pessoa,
      idade: pessoa.idade + 1
    };
  }
const usuarioAtualizado = fazerAniversario(usuario);
console.log(usuario.idade); // Saída será 30
console.log(usuarioAtualizado.idade); // Saída será 31

Agora:

  • O original permanece intacto
  • A mudança é explícita
  • O fluxo é previsível

Imutabilidade não é “modinha”

Ela resolve problemas reais:

  • Debug mais fácil
  • Menos bugs imprevisíveis
  • Fluxo de dados claro
  • Facilidade de testes
Frameworks modernos dependem disso:

  • React
  • Redux
  • Vue (em vários pontos)
  • Zustand

Arrays e mutação (armadilha comum)

Esses métodos MUTAM o array:

  • push
  • pop
  • splice
  • sort
Eles alteram o array original.

Alternativa imutável

 
  const numeros = [1, 2, 3];
  const novosNumeros = [...numeros, 4];
  console.log(numeros); // Saída: [1, 2, 3]
  console.log(novosNumeros); // Saída: [1, 2, 3, 4]

Map, filter e reduce já são imutáveis

Você já usa imutabilidade sem perceber:

 const pares = numeros.filter(n => n % 2 === 0); 
  • O array original não muda
  • Um novo array é criado

Imutabilidade + Closures = poder

Closures guardam estado.

Imutabilidade garante que esse estado:

  • não seja corrompido
  • não seja alterado inesperadamente
Essa combinação é base de arquiteturas modernas.

Custo da imutabilidade (honestidade)

Imutabilidade:

  • cria novos objetos
  • usa mais memória

Mas:

  • o ganho em previsibilidade compensa
  • otimizações modernas minimizam isso
Imutabilidade é uma escolha consciente, não um dogma.

Resumo da aula para nunca mais esquecer

  • Imutabilidade evita efeitos colaterais
  • Não altere dados — crie novos
  • Mutação dificulta debug
  • JavaScript moderno favorece imutabilidade
  • Previsibilidade vale mais que “economia”

Na próxima aula, vamos dar o próximo passo funcional: Currying.


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 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.


O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.


O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.


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.


O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.