JavaScript连等赋值运算理解

var a = {n:1};
var b = a;
a.x = a = {n:2};
console.log(a);
console.log(b);
console.log(a.x);
console.log(b.x);
输出结果:
//{n:2}
//{n:1,x:{n:2}}
//undefined
//{n:2}

看明白了网上的解释,传送,自己再整理了下。有如下2点知识点:
1.连等运算符 首先要确定所有变量地址
2.连等运算符 是由右向左执行

知道以上2点的话再回头看下,

第一步:

var a = {n:1};
var b = a;

执行到这里,地址指向如下:
《JavaScript连等赋值运算理解》

第二步

a.x = a = {n:2};

走到这段代码时,
分如下几块:
a.确定2个地址,a.x和a ,a的地址已经指向了{n:1},x为新声明,地址指向null,此时指向关系如下:
《JavaScript连等赋值运算理解》
b.执行 a = {n:2};
《JavaScript连等赋值运算理解》
c.执行 a.x = a;
《JavaScript连等赋值运算理解》

到此,执行完毕,打印a.x时 为undefined,b.x为{n:2}.

点赞