js 连续赋值运算

Tags
javascript
Created
Oct 17, 2015 3:55 PM

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赋值了

SuperMade with Super