3
respostas

Por referência, por valor ou nenhum dos dois?

Alguém consegue me explicar como funciona a passagem de parâmetros nas functions?

function altera(objeto, array, string)  {
    objeto.nome = "Guilherme";

    objeto = {nome:"Aline"};

    array.push("Aline");

    string = "Aline";
}

objeto = {nome:"Sem Nome"};
array = ["Guilherme"];
string = "Guilherme";

console.log(objeto); // Object {nome: "Sem Nome"}

console.log(array); // ["Guilherme"]

console.log(string); // Guilherme

altera(objeto, array, string); 

console.log(objeto); // Object {nome: "Guilherme"}

console.log(array); //  ["Guilherme", "Aline"]

console.log(string); // Guilherme
3 respostas

Oi Guilherme,

No seu código está acontecendo muitas coisas :). Basicamente a passagem de parâmetros no js é igual a outras linguagens...

Quando alguém invocar a função alterar ele passará 3 valores que chegarão como os 3 parâmetros da sua função.

O detalhe aí é que você altera os valores que os parâmetros estão guardando, para fazer os seus testes :).

Certo. Mas por que fazendo: objeto.nome = "Guilherme";

altera a referência e fazendo: objeto = {nome:"Aline"};

não altera, e nada acontece?

Oi Guilherme,

Essa linha aqui não está acontecendo:

console.log(objeto); // Object {nome: "Guilherme"}

Ele continua aparecendo "{ nome: 'Sem Nome' }", como era esperado.