变量名跟对象实体的关系

来源:互联网 发布:多功能助手软件 编辑:程序博客网 时间:2024/06/03 20:29
 var a = {n : 1};var b = a;a.x = a = {n : 2};console.log(a.x);//undefinedconsole.log(b.x);//{n:2}  console.log(a.n);//2  console.log(b.n);//1
解析:a.x = a = {n : 2};
// 从右往左赋值,a = {n:2}; 从此a是新对象
但是a.x在写入的时候此处的a扔为老对象。因为虽然是从右往左赋值,但是写入代码的顺序却是:从左往右。
b始终与老对象a保持着引用关系,所以b.x={n:2};
计算机的运算方式是:从上至下,从右到左赋值,
以上运行后的结果应当是:a:{n:2}
      b:{n:1
x:{n:2}
}
当console.log(a)时,此时写入的a是新的对象,js中访问不存在的变量,输出的应该是undefined