Почему происходит данная вещь:
var ar1 = ar2 = [];
console.log(ar1);
console.log(ar2);
ar1.push(3);
console.log(ar1);
console.log(ar2);
var ar1 = ar2 = 2;
console.log(ar1);
console.log(ar2);
ar1 = 3;
console.log(ar1);
console.log(ar2);
Результат:
[]
[]
[3]
[3]
2
2
3
2
Т.е. если мы создаем два массива, они создаются по ссылке. А переменные создаются по значению.