js中连等的执行顺序:a.x = a = {n: 2}

本文通过一道查漏补缺题,深入解析JavaScript中连续赋值的执行机制与内存操作原理,探讨变量赋值顺序及引用类型赋值特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新的一天从一道查漏补缺题开始:

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

解析:

  1. 多次赋值与顺序无关,是同时进行赋值的
  2. 每个节点的变量最终赋值的值取决去最后一个等号的右边值
  3. 如果赋值是引用类型,则最终指向的是同一个对象

在这里插入图片描述

a.x=引用的是堆内存里面的属性变量,在解析时会直接对这个地址的变量进行操作,而a=访问变量栈内存里面这个变量名,所以进行赋值操作并不会影响前者,因为解析这个语句时一次性全部读取再进行赋值,而不是进行分段读取赋值的。所以就解释了与顺序无关,所有的属性都将会被赋值到最右的值

参考:

是从这位作者这里看到的噢,只是做一个转存:JavaScript连续赋值的执行顺序问题

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值