Javascript – atribuição por referência x atribuição por valor

No Javascript os dados do tipo primitivos são atribuídos por valor e os objetos são atribuídos por referência.

O que são dados do tipo primitivos?

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

O que são considerados objetos?

  • Array
  • Funções
  • { }

O que significa passar os dados por valor?

Nos dados primitivos os dados são passados por valor, isso significa que é criado uma cópia e acontece uma nova alocação de memória para aquela informação.

let a = 1;
let b = a;
b += 1;

console.log(a); //1
console.log(b); //2

No exemplo acima, quando defino b é criado uma nova alocação de memória que copia o valor de a e atribui a minha nova variável b. Elas agora são independentes.

O que significa passar os dados por referência?

Quando falamos que os dados são passados por referência significa que irão apontar para o mesmo objeto na memória – o novo objeto será apenas uma referência ao caminho do objeto original na memória (pense como se fosse um atalho que você cria no seu desktop).

Isso acontece nos objetos:

let person = { name : 'Pacato'};
let person2 = person;
person2.name = 'Leon';

console.log(person.name); //Leon
console.log(person2.name); //Leon

Como person2 é apenas uma referência ao objeto alocado na memória como person, qualquer alteração em qualquer um deles será refletida no outro.

let arr = [1,2]; 
let arr2 =arr; 
arr2.push(3); 
console.log(arr); // [1, 2, 3]
console.log(arr2); // [1, 2, 3]

O mesmo ocorre com o array acima.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *