var a = {n:1};
a.x = a = {n:2};
console.log(a)
console.log(a.x)
a.x打印出来是undefined
为什么是这样的呢
首先 表达式运算都是从左至右
a.x=a={n:2}
明显都是表达式
在函数式语言中 对任何对象的操作都是函数执行的结果 包括这个a.x
a.x经过引擎操作此刻指向的是原始的a 并空悬着
直到a={n:2}时 又把a赋予了新的值
而此刻指向原始a的a.x被抛弃变的不可访问 此时原始a应该是{n:1,x:{n:2}} 但是访问不到了
我们只能访问到现在的a 现在的a是{n:2}