JS中连等赋值的个人理解

    var a = {n: 1}  
	var b = a;  
	a.x = a = {n: 2}
	console.log(a.x);   //undefined
	console.log(b.x);   //{n: 2}

如上,a.x 是 undefined , b.x 是 {n: 2} 。
为什么会这样呢,我个人理解是这样的。

先把 {n: 1} 的内存地址看作 地址E , {n: 2}的内存地址看作 地址F

浏览器在看到 a.x = a = {n: 2} 这条语句 ,
就已经确定好了a当时指向的地址是 地址E,在地址E中多了x ,被a.x 指向

然后从右到左执行, 把 a 的地址指向 地址F, 地址E中的 x 指向了 地址F

所以,a的指向地址是 地址F,{n: 2} , 由于b是指向地址E的,b就有了地址E中的x ,{n: 2}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值