Valores Primitivos e Valores de Referência no JavaScript

Neste tutorial você vai aprender as diferenças entre os valores primitivos e de referências no JavaScript.

Ricardo Reis
4 min readJun 28, 2020

--

English version: https://www.javascripttutorial.net/javascript-primitive-vs-reference-values/

Acessando por valor e referência

No JavaScript, uma variável pode armazenar dois tipos de valores: primitivo e referência.

Quando você atribui um valor a uma variável, o motor JavaScript determinará se o valor é primitivo ou de referência.

É fornecido no JavaScript seis tipos primitivos:

  • undefined
  • null
  • boolean
  • number
  • string
  • symbol

…e um tipo de referência:

  • object

O tamanho de valor primitivo é fixo, portanto, o JavaScript armazena o valor primitivo na pilha.

Por outro lado, o tamanho de um valor de referência é dinâmico, o JavaScript armazena o valor de referência no heap.

Se o valor for um tipo primitivo, ao acessar a variável, você manipula o valor real armazenado nessa variável. Em outras palavras, a variável que armazena um valor primitivo é acessada por por valor.

Quando você manipula um objeto, trabalha na referência desse objeto, e não no objeto real. Isso significa que uma variável que armazena um objeto é acessada por referência.

Para obter o tipo de um valor primitivo, use o operador typeof, por exemplo:

Outro exemplo:

Para encontrar o tipo de um valor de referência, use o operador instanceof:

No exemplo a seguir a variável rgb é uma instância do objeto Array:

Copiando valores primitivos

Quando você atribuir uma variável que armazena um valor primitivo a outra variável, o valor armazenado é criado e copiado na nova variável.

Vamos ver um exemplo:

Primeiro, declaramos uma variável a e a inicializamos seu valor com o número 10.

Segundo, declaramos outra variável b e atribuímos a ela o valor da variável a.

Internamente, o motor do JavaScript copia o valor armazenado em a para b.

Terceiro, atribuímos à variável b um novo valor, o número 20.

Como a e b não se relacionam, quando alteramos o valor de b o valor da variável a não muda.

Copiando valores de referência

Quando você atribui um valor de referência de uma variável para outra, o valor armazenado na variável também é copiado no local da nova variável.

A diferença é que os valores armazenados nas duas variáveis agora são o endereço do objeto real armazenado no heap. Como resultado, ambas as variáveis estão referenciando o mesmo objeto.

Veja o exemplo:

Primeiro, declaramos uma variável x que contém um objeto cuja propriedade é name: 'John'.

Segundo, declaramos outra variável y atribuindo o valor de x para essa nova variável y.

Agora x e y estão fazendo referência ao mesmo objeto no heap.

Terceiro, modificamos o valor armazenado na propriedade name do objeto usando a variável y.

Como ambas variáveis x e y fazem referência ao mesmo objeto, a alteração também será refletida se você acessar o objeto usando a variável x.

Neste tutorial você aprendeu sobre o acesso por valor ou por referência e também as diferenças entre eles.

Veja o índice de todos os tutoriais JavaScript

Confira uma série de outros tutoriais JavaScript que eu escrevi, clicando no link abaixo:

--

--