Javascript引用类型问题

题目

img

主要是第三行代码比较迷,我之前是认为第三行代码的执行顺序是:l 先指向了 { x : 20 }这块内存, 然后又将l 赋值给l.y ,g 依然指向原先的不会发生改变,图中的正确答案应该是如何获取到的呢?为什么 g 会有y呢?

你的第三行代码 这个是由于运算符优先级,.(字段访问)大于=(赋值操作),所以先进行.运算,此时l还是指向原来内存地址,在原来内存地址新增了y属性,.操作完成以后,再执行从右到左赋值操作,此时l指向新的内存地址,这时再访问l.y肯定就是undefined。