¿Por qué console.log(a) no devuelve el mismo resultado [1, 2, 3, 4] que console.log(b)?
function test(c, d) { c = [1, 2, 3, 4]; d.push(4); } a = [1, 2, 3]; b = [1, 2, 3]; test(a, b); console.log(a); console.log(b);Con a = [1, 2, 3, 4]; está anulando el argumento (que es local para la función) que ha pasado a la test de función. No está realizando ningún cambio en la matriz real a . Ahora el interior a ni siquiera apunta a arreglo exterior.
Pero ocurre un cambio cuando haces b.push(4) , que en realidad muta la matriz b afuera.
function test(a, b) { a = [1, 2, 3, 4]; b.push(4); } a = [1, 2, 3]; b = [1, 2, 3]; test(a, b); console.log(a); console.log(b);