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]




