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.
Webmentions
[…] Javascript – atribuição por referência x atribuição por valor […]