Cita: estuve investigando un poco y creo que se trata de algo llamado tipos primitivos, consiste en que cuando una variable se define de esa forma el valor de la variable no se pasa por valor, (valga la redundancia), si no por referencia, cosa que aun no logro entender muy bien, agradecería si algun experto en JS me da una mano,
buenas...
no es tan así. es por el tipo de dato. pongamos de esta manera, hay datos complejos y hay datos básicos. los complejos por lo general son aquellos que pueden almacenar más de una información y los básicos una sola información. los tipos complejos se pasan por referencia mientras los básicos se hace una copia del contenido. por tanto, cuando se pasan por referencia, cualquier cambio que hagas se ve afectado en cualquiera de las variables que tienen acceso a ese dato. el problema en javascript es que ese detalle no se puede controlar, sino que lo hace automaticamente el lenguaje utilizando como norma lo antes expuesto. si quieres hacer una copia de un dato complejo (array, objetos), lo más fácil es serializarlo a JSON y luego parsearlo.
Código:
var a = [0,1,2,3];
var b= JSON.parse(JSON.stringify(a)); // esta linea es la que serializa y parse ;
b.pop();
console.log(a,b);