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]