let vs const JavaScript: Qual Usar e Como Evitar Erros de Execução
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.

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:

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.

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.

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:

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!