JavaScript中对象的连续赋值问题

代码和问题如下

var a = {n:1};  
a.x = a = {n:2};  
alert(a.x); // --> undefined  为何输出undefined  
var a = {n:1};  
var b = a; // 持有a,以回查  
a.x = a = {n:2};  
alert(a.x);// --> undefined  
alert(b.x);// --> [object Object]  为何能打印  与上述代码有什么不同

麻烦解释下 原理 谢谢!~

阅读 3.6k
3 个回答

出处:http://www.iteye.com/topic/78...
简言之:虽然等号赋值运算是从右向左运算,但js中的表达式都是从左向右赋值
在a={n:2}之前,a.x中的a就已经确定是{n:1},因此最后{n:2}赋予的x是{n:1}中的x,a变为{n:2}并不会携带x
当然,我的理解是基于原贴中的大神讲解

其中AAAFFF000和BBBFFF000是假设存入的16进制地址,不一定是叫这个名字,但是是16进制的

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏