这是牛客上的一道选择题,控制台的输出结果是什么呢?这道题的考点就是对JS中连等赋值的理解。
有关JS的连等赋值,网上的文章还是比较多的。我比较认同这篇文章👉由ES规范学JavaScript(二):深入理解“连等赋值”问题的解释:
a. 根据右结合性可得

b. 赋值运算从左到右

① 变量 obj、res 初始指向 num1 所在的对象,obj.child 向此对象添加一个 child 属性
② 修改 obj 变量的指向,将其指向 num2 所在的对象
③ 将 num1 所在对象的 child 属性指向 num2 所在的对象
最终可以得到:

说一下我自己的理解吧,曾经《你不知道的JavaScript》上卷中有看到引擎在执行赋值语句时对话,使用了LSH和RSH来用来解释赋值操作,其实是和上面的观点比较契合:
a、LSH:在执行连等时,会对等号左侧进行LSH查找
b、RSH:进行LSH查找后,会对右侧(非左侧)进行RSH查找
