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

Dúvida sobre a passagem de lista

Eu estava olhando a resolução do exercicio aqui no forum e me apareceu outra duvida, então a unica coisa que pega a referencia da lista é se for passada para uma variavel de parametro de uma função? então se eu declarar uma variavel e colocar que é igual a variavel da lista ela vai copiar os valores e não a referencia?

let lista1 = [1, 1, 1, 1]
let lista2 = lista1

Nesse exemplo, o que estaria na lista2 é apenas o valor e não a referencia da lista1 certo? Mas o que esta armazena na lista2 é uma lista igual mas com referencia na memoria diferente da lista1 ou é apenas um valor? Não sei se conseguir explicar direito minha duvida.

2 respostas
solução!

Oi Wesley, como vai?

No Javascript, independentemente se uma lista foi passada por parâmetro ou não, sempre quando declaramos que uma variável é igual a uma lista, essa variável irá pegar o endereço de memória da lista, e qualquer modificação na variável irá resultar em uma modificação da lista original. Aqui um exemplo:

const lista1 = [1, 1, 1, 1]
const lista2 = lista1

lista2.push(3)

console.log("Lista 1:",lista1) // Resultado = Lista 1: [ 1, 1, 1, 1, 3 ]
console.log("Lista 2:",lista2) // Resultado = Lista 2: [ 1, 1, 1, 1, 3 ]

No exemplo acima, quando declaro que a const lista2 é igual a lista1, a const lista2 fica com a referência de memória de onde está armazenada a lista1. Então, quando utilizo a função push do Javascript para adicionar um elemento final na lista2, a lista2 e a lista1 são alteradas, pois a lista2 ficou com a referência de memória da lista1.

Espero que essa resposta te auxilie.

Caso tenha quaisquer comentários ou dúvidas a respeito de alguma aula ou desafio, pode postar aqui no fórum que vamos te responder!

Abraços e bons estudos!

Ahh agora entendi, muito obrigado!