JavaScript – Comportamento de arrays como argumento de funções. Referência ou valor?

image_pdfimage_print

Em JavaScript, array como argumento de função são passados como referência ou por valor?

São passados como referência. Por isto, se algo for modifcado no array internamente na função, o resultado irá se refletir na variável externa.

Abaixo um exemplo

var adicionar_elemento = function ( b ){
    b.push("a");
};

var b = [0,1,2];

//Executa a função que adiciona internamente o elemento 'a' ao array
adicionar_elemento(b)

//Externamente a variavel b foi alterada
console.log(b); // [0, 1, 2, "a"]

Caso queira passar o array por valor a uma função, será necessário utilizar a seguinte construção através da função slice(), que criará uma cópia do array.

//Cria uma cópia do array
var c = b.slice();
adicionar_elemento(c);

//Externamente a variavel b não foi alterada
console.log(b); // [0, 1, 2]
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!