欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js连续赋值a.x=a={n:2}

程序员文章站 2024-03-17 21:34:46
...
var a = {n : 1}
var b = a;
a.x = a = {n : 2}
console.log(a.x);
console.log(b);

js连续赋值a.x=a={n:2}
此题重点:js复杂数据类型在内存中如何存储

由undefined知:对象a经过运算后,对象内无x属性
由b知:a.x的赋值有效

在var时
js连续赋值a.x=a={n:2}
a.x = a = {n : 2}运算
js连续赋值a.x=a={n:2}
a.x保存在原先地址上,其后对象a指向了新地址

附:
个人理解与运算顺序关系不大,重点在于运算时,a当前的值是什么 ,如a.x执行时还未经过{n : 2}的赋值,其属性x运算在原先的{n : 1}上,其后运算才改变其值,所以得此结果。

另:
a = a.x = {n : 2} 也是同样的套路,运算a.x时,对象a值未改变,还是在{n : 1}上,所以是先在{n :1}上发生a.x = {n : 2}的操作,再重新赋对象a值,所以两个式子结果相同

相关标签: js