js 连续赋值运算

var a = {n: 1};
var b = a;
a.x = a = {n: 2};

这里面第三句可以直接拆解为:
a.x,a // 先计算各个表达式(并非原始表达式),.运算符优先级高
a = {n : 2}; // 再计算运算符组成的复杂表达式
a.x 运算的结果,是和 b 引用的同一个内存地址的对象 {n:1},
而 a 赋值的时候,a 的内存地址就指向了{n:2},
最后 a.x 是 undefined,b.x 是 {n:2},

// js 赋值问题
o = {};
c = o.a; //这里没有给o.a赋值
c = o.b = []; //这里给o.b赋值了