Javascript variáveis tipo referência e primitivas
Olá, Pessoal!
Vim falar um pouco pra vcs sobre um assunto muito importante no javascript que são as variáveis tipo primitivo e referências. No javascript as variáveis são divididas em tipo
Primitivo:
- undefined
- null
- boolean
- number
- string
- symbol
Referência:
- Object
Certo, mas pq deveríamos saber disso? a resposta está em como manipulamos a memória.
Exemplo os tipos de variáveis referência tais como os arrays ou objetos em javascript. Quando passamos para um função ou os declaramos estamos passando endereços da memória para fazermos a manipulação e não o valor em si.
Exemplo:
function teste(a,b){
a = 2;
b = 5;
}
function teste2(arrayValores){
arrayValores[0] = 10;
arrayValores[1] = 20;
}
let a = 150
let b = 120;
const arrayValores=[5,7];
teste(a,b);
console.log(a = ${a})
console.log(b = ${b})
teste2(arrayValores)
console.log(Array[0] = ${arrayValores[0]})
console.log(Array[1] = ${arrayValores[1]})
No exemplo acima podemos observar que a funcao teste2 consegue manipular os valores do array e o resultado é atualizado mesmo fora da função pois por ser uma variável do tipo referencia o javascript entende que acessamos o valores pelo endereco de memória e atualizamos ele. Já na funcao teste os valores a e b são passados para funcao teste e sao atualizados dentro dela mas nada acontece. Pq isso? justamente pq as variáveis de tipo primitiva só "conhecem" cópia de valores. Ou seja, o "a" e "b" , passados para funcao teste não são mais aqueles que declaramos com let mas sim é passada uma cópia de ambos os valores para a funcao teste e lá são manipuladas apenas cópias dos valores originais.
Por isso, uma das recomendações da MDN é declarar arrays,objetos etc (Ou qualquer variável tipo referência) com const em vez de let pois endereços de memória via de regra não devem mudar.
Quaisquer dúvidas, estou à disposição.
Em resposta aMarceloJhonesDev⬆:Grasiele Tinoco @grasieletinocoArtigo muito interessante.
