DEV Community

Cover image for Variáveis primitivas no JavaScript (string, number) são imutáveis
Lais Frigério
Lais Frigério

Posted on

Variáveis primitivas no JavaScript (string, number) são imutáveis

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"
Enter fullscreen mode Exit fullscreen mode

Na sequência tente realizar a seguinte alteração:

text[3] = "o"
Enter fullscreen mode Exit fullscreen mode

Se fosse mutável, o seguinte console deveria retornar "bolo":

console.log(text) 
Enter fullscreen mode Exit fullscreen mode

Mas como a variável é imutável, o seguinte console continua retornando "bola":

console.log(text) 
Enter fullscreen mode Exit fullscreen mode

Li diversos artigos para entender esse comportamento. Vou indicar abaixo algumas leituras (todas em inglês):

👉The Secret Life of JavaScript

👉 Primitive X Non-Primitive

👉 How Memory works in JavaScript

Tem algo a complementar sobre o assunto? Deixa nos comentários 👇

Top comments (0)