关于a.x = a = {n:2};的理解

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}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容