代码 var a = {n:1}; var b = a; // 持有a,以回查 a.x = a = {n:2}; alert(a.x);// --> undefined alert(b.x);// --> {n:2} 思路 赋值是从右到左的,但不要被绕晕了, 其实很简单,从运算符优先级来考虑 首先创建两个变量a, b,这两个变量同时指向对象{n:1} .运算优先于=赋值运算 所以此时先创建了a.x和对象{n:2} 然后将a.x和a同时指向对象{n:2} 所以结果为 a.x = undefined b.x = {n:2}