考察连等赋值。
1

obj.child = obj = { num2: 935 };
JS引擎在执行赋值语句时,会先从左往右解析各个变量名,转换成变量值,然后从右往左执行赋值。
所以这里首先两个obj都为{ num1: 117 }。
接着从右往左:
1
2

obj = { num2: 935 };//第二个等号赋值
{ num1: 117 }.child = { num2: 935 };//第一个等号赋值
值得注意的是第二个才为真正的obj只有num2。
而第一个obj已经被替换为{ num1: 117 }对象,这个对象中有个child属性,而res又引用了这个对象所以res改变为{ num1:117, child: { num2: 935 } }。

而对var x = y = 935; 同理从右往左执行。可以理解为var x = ( y = 935 );或者y = 935; var x = y;
全部评论

相关推荐

AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享
03-31 17:40
已编辑
门头沟学院 算法工程师
程序员牛肉:小牛肉来也! 也不要焦虑啦,你第一志愿还没有结束,只是回到人才库(泡大池子等待各个部门挑选)而已。仅仅代表你不符合这个组的用人标准,并不能够说明你在本次暑期实习中没机会加入美团了。 还是平复好心态,不断的复盘,等待下一次面试就好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务