1
resposta

Sobre passagem por valor e por referência

Boa tarde!

Gostaria de discutir sobre a questão referenciada de passagem por valor e por referência.

Existem diferenças em linguagens que utilizam interpretadores ao invés de compiladores?

No caso tenho um pouco de familiaridade com python3 e não me recordo de ter sido elencado o tema de passagem de valor e passagem por referencia. É um tema exclusivo para javascript, JS ou C?

1 resposta

Em todas as linguagens (ao menos todas que eu conheço :P), existem duas formas de você passar valores: Por referência; Por valor. Quando eu digo “passar valores”, eu estou me referindo à: Atribuir um valor à uma variável; Atribuir um valor à uma propriedade ou método de um objeto; Passar argumentos para uma função (ou método de um objeto). Por exemplo: 1 2 var string = 'uma string qualquer' var objeto = {} No exemplo acima, eu atribuí o valor 'uma string qualquer' à variável string, e também atribuí um novo objeto à variável objeto. Até aqui, nada de anormal. Mas existem alguns conceitos por detrás dessas atribuições: O valor 'uma string qualquer' foi passado para a variável string por valor. Já o objeto passado para a variável objeto, foi passado por referência. E para explicar a diferença entre essas duas formas de passagem passagem de valor, precisamos entender algumas coisas da linguagem JavaScript. Tipos de dados em JavaScript JavaScript tem alguns tipos de dados que podemos separar em:

Tipos primitivos; Objetos. Os tipos primitivos da linguagem são: number, string, boolean, null e undefined. (Symbol também é um tipo primitivo, que veio no novo pacotinho do ES6/2015).

Todos os outros tipos de dados em JavaScript são do tipo object:

Objetos; Funções; Arrays; Regex; etc. Tá, e daí? O que isso tem a ver com o post?

Aí que está: tem tudo a ver! E agora que você conhece quem são os tipos primitivos e quem são os objetos, eu já posso te dizer que:

Tipos primitivos são passados por valor, e são imutáveis; Objetos são passados por referência, e são mutáveis. Guarde bem essa informação, ela vai ser útil logo, logo =)

retirado do livro ciencias da computação