Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como altera de referência para valor?

Eu entendi a solução apresentada no fórum, de duplicar a referência da lista por meio de "Sintaxe de Espalhamento". Mas realmente ainda não entendi a ideia que o número não se altera na memória e a lista sim. Como? Se a lista também é feita de números. O que há de tão diferente entre Valor e Referência mesmo com os dois sendo números?

2 respostas

Oi Yuri, Talvez ajude:

https://dotnetcaxias.wordpress.com/2017/07/06/tipos-por-valor-e-referencia/

solução!

Então, eu acredito que o procedimento/tratamento é diferente por conta de regra de sistema. (irei pesquisar mais e trago depois uma resposta).

Mas irei explicar como que o sistema trata cada um:

Para as LISTAS, para a função é passada a REFERÊNCIA da localização daquela variável LISTA. Para os números, para a função é passado o VALOR daquela variável.

Se você faz uma função para a LISTA, o sistema irá tratar da seguinte maneira:

<script>

function passandoReferenciaLista (referenciaDaLista){ // vai trazer a referência da lista de "compras"
    referenciaDaLista[0] = 6; // É como se tivesse escrito assim: compras[0] = 6 // A referência da lista "compras" tomou o lugar de "referenciaDaLista" e mudou a posição 0 da lista de "compras" para 6.
}

var compras = [3, 5, 8];

console.log(compras); // Antes: [3, 5, 8]

passandoReferenciaLista(compras); // faz a modificação da lista

console.log(compras); // Depois: [6, 5, 8]

</script>

Uma mesma função para número o resultado é diferente.

Se você faz uma função para o NÚMERO, o sistema irá tratar da seguinte maneira:

<script>

function paraOvalorDoNumero (valorDoNumero){ //Ele tras o próprio número 3
    valorDoNumero = 6; // É como se tivesse escrito assim: 3 = 6 // Não tem como 3 receber 6.
}

var preco = 3;

console.log(preco); //3

paraOvalorDoNumero(preco);

console.log(preco); //3 // permance 3, pq a função não tina como fazer 3 receber 6.

</script>

Espero ter ajudado. Sucesso na sua jornada!!