y = x;
y = 6;
Here, you’re assigning the value of x to y and then changing y. This doesn’t change x because x is never assigned a new value.
var x = {}, y = {};
Here, you create two new objects and assign their addresses to x and y. The two variables behave like pointers now and don’t hold the object’s values themselves but just its address. So, with x.a = 5 you’re not assigning 5 to x but to the new property a added to the object only referenced by x.
x = y;
y.a = 6;
And, here you actually overwrite that previous object’s reference and make x point to the object referenced by y now. Since, x and y point to the same object now, the changes done through y reflect for x as well.
3
solved Javascript reference [closed]