No JavaScript temos 2 tipos de variáveis:
👉 Primitivas: String, Number, Boolean, Null, Undefined, BigInt e Symbol.
👉 Não Primitivas: Objetos (objeto, array e função)
As primitivas são consideradas IMUTÁVEIS. Isso mesmo: os tipos primitivos não são alterados 😮
"Como assim, Lais??"
As variáveis primitivas são alocadas em uma região da memória conhecidas como Stack - static allocation.
Nesta área, quando uma variável é reatribuída, um novo espaço em memória é alocado para guardar o novo valor. O antigo valor não é mais utilizado e, na sequência, o Garbage Collector vai limpar o espaço em memória que não é mais referenciado.
Por isso, as variáveis primitivas são consideradas IMUTÁVEIS!!
E como eu posso testar este comportamento?
Abre o navegador, vai na aba "Console", declara uma variável:
let text = "bola"
Na sequência tente realizar a seguinte alteração:
text[3] = "o"
Se fosse mutável, o seguinte console deveria retornar "bolo":
console.log(text)
Mas como a variável é imutável, o seguinte console continua retornando "bola":
console.log(text)
Li diversos artigos para entender esse comportamento. Vou indicar abaixo algumas leituras (todas em inglês):
👉The Secret Life of JavaScript
👉 How Memory works in JavaScript
Tem algo a complementar sobre o assunto? Deixa nos comentários 👇
Top comments (0)