Imutabilidade de Strings no JavaScript: O Guia Visual de 12 Passos
Muitos programadores iniciantes confundem reatribuição com mutação. No JavaScript, as strings são imutáveis: uma vez criadas na memória, elas não mudam. O que muda é para onde a sua variável aponta.

Neste guia longo e detalhado, vamos seguir os 12 passos técnicos para entender o que acontece na Memória Heap durante a execução do código.
1. Preparando o Ambiente de Teste
Para esta análise, utilizaremos um script simples onde a variável developer recebe o nome “Jessica” e depois é alterada para “Quincy”.

2. O que define uma String?
Antes de rodar o código, lembramos que a String é um Tipo de Dado Primitivo. Ela é uma sequência de caracteres que pode ser delimitada por aspas simples ou duplas.

3. Iniciando a Execução (Breakpoint)
Ao iniciar o Debugger, paramos na primeira linha. A memória ainda está aguardando a execução para alocar os dados.

4. Passo 1: Alocação e Endereçamento
Quando a linha let developer = "Jessica" é executada, o sistema cria o valor na memória e gera uma referência (ponteiro) chamada 0x01.

5. Passo 2: Saída de Dados
O comando console.log acede ao endereço 0x01 para mostrar “Jessica” no ecrã.

6. O Momento da Reatribuição
Agora chegamos ao ponto crítico. O código pede para mudar o valor da variável. É aqui que a imutabilidade se revela.

7. Passo 3a: Nova Alocação em Memória
O JavaScript não apaga “Jessica”. Ele cria um novo espaço na memória (endereço 0x02) para guardar o valor “Quincy”.

8. Passo 3b: Redirecionando o Ponteiro
A variável developer deixa de apontar para 0x01 e passa a apontar para 0x02. O valor antigo continua lá, mas a variável agora tem um novo “alvo”.

9. Passo 4: Verificação Final
Ao final, o console mostra os dois estados. O histórico de execução prova que os dois valores coexistiram na memória em momentos diferentes.

10. A Prova Visual da Imutabilidade
Esta imagem é a mais importante: veja como “Jessica” no endereço 0x01 nunca foi modificada. Ela apenas perdeu a referência da variável. Isso é ser imutável.

Reatribuição vs. Mutação
Para encerrar, entenda a diferença definitiva:
- Reatribuição: Mudar para onde a variável aponta (Válido).
- Mutação: Tentar mudar o texto dentro da string (Proibido/Impossível).

// O que aprendemos:
let developer = "Jessica";
developer[0] = "Q"; // NÃO FUNCIONA (Imutabilidade)
developer = "Quincy"; // FUNCIONA (Reatribuição)
A imutabilidade garante segurança e previsibilidade ao seu código. Ao entender que a variável apenas “aponta” para valores fixos na memória, você domina a base necessária para manipular dados complexos no futuro.
Pronto para o próximo nível? Tente usar o Debugger do seu navegador para observar as referências de memória na próxima vez que trabalhar com grandes volumes de texto!