5.1 Valor y Referencia

Las variables de tipo primitivos siempre se pasan por valor, es decir ambos tienen su propio espacio en memoria.
Para cada una de las variables declaradas se crea un  espacio en memoria y guarda el valor para cada una de ellas, así que si se asigna un  valor diferente después de igualar a otra variable conserva el valor que inicialmente se le asigna.

var x = 35;
var y = x;

console.log(x);
console.log(y);

x = 55;

console.log(x);
console.log(y);

Con los objetos siempre se pasan por referencia, es decir se declara un objeto con cada una de sus propiedades y se queda en un espacio de memoria, si se igualan dos objetos, en realidad es el mismo espacio de memoria solo apuntado desde dos objetos, por lo tanto si se asigna un valor distinto a una propiedad del objeto cuando hacemos referencia al mismo tendrá el valor referenciado las veces que se llame.

var a = {
         nombre: "Karen"
        }

var b = a;

console.log(a);
console.log(b);

c.nombre = "Eduardo";

console.log(a);
console.log(b);

c.nombre = "Ana";

console.log(a);
console.log(b);

Con esto podemos diferencia entre asignar por valor o por referencia segun el espacio de memoria asignado o apuntado.