Na hora de programar em JavaScript, uma das primeiras decisões que você toma é escolher entre let e const. Parece simples, mas essa escolha determina como o seu programa lida com a memória e a segurança dos dados. Escolher a “caixa” errada pode travar o seu código com erros inesperados.

Capa: Análise de Execução let vs const

Neste guia, vamos mergulhar no ciclo de vida dessas variáveis e entender, passo a passo, como elas se comportam na memória.

O Cenário de Teste

Para entender a diferença, vamos analisar como o navegador processa o seguinte código:

Cenário de Teste: Código com let score e const maxScore

Enquanto o let é projetado para mudar, o const nasce para ser imutável. Vamos ver o que acontece “por baixo do capô”.


1. A Flexibilidade do let

A palavra-chave let permite que você declare variáveis que podem ser atualizadas ou reatribuídas posteriormente. Ela funciona como um recipiente flexível.

Declaração vs. Atribuição

Com let, você pode declarar a variável agora e dar um valor a ela só depois. Se você apenas declarar (let age;), o JavaScript reserva o espaço na memória com o valor undefined.

Flexibilidade do let: Declaração gerando undefined e Atribuição posterior

Quando você reatribui um valor (muda de 10 para 20), o JavaScript simplesmente descarta o valor antigo e guarda o novo no mesmo contêiner. Isso é ideal para contadores e pontuações de jogos.


2. A Rigidez e Segurança do const

O const é usado para valores que não devem ser alterados acidentalmente. Uma vez que você atribui um valor, ele está “trancado”.

O Clímax: A Tentativa de Reatribuição

Se você tentar mudar o valor de uma const (ex: mudar maxScore de 100 para 200), o JavaScript interrompe a execução e exibe um erro clássico no console:

[ERRO] Uncaught TypeError: Assignment to constant variable.

Erro de reatribuição inválida em constante

Inicialização Obrigatória

Diferente do let, você não pode “deixar para depois”. Uma const deve receber um valor no exato momento da sua declaração. Tentar apenas declarar gera um erro de sintaxe:

Erro de falta de inicializador na declaração const


Tabela Comparativa de Execução

Confira as diferenças técnicas que impactam o funcionamento do seu sistema:

Característica let const
Escopo de Bloco Sim Sim
Pode Reatribuir? Sim Não (Gera TypeError)
Precisa Inicializar? Não (Padrão: undefined) Sim (Gera SyntaxError)

Quando Usar Cada Uma?

Para um código limpo e seguro, siga estas diretrizes:

  • USE const: Como padrão para todos os valores (configurações, seletores de DOM, constantes matemáticas). Isso previne erros acidentais.
  • USE let: Apenas para valores que você tem certeza que precisam mudar, como variáveis de loop ou contadores.

Qual foi o erro de console que você mais encontrou hoje? Comente aqui embaixo e vamos resolver juntos!