宝哥软件园

通过例子理解JS连续赋值

编辑:宝哥软件园 来源:互联网 时间:2021-08-20

本文主要通过实例介绍对JS连续赋值的理解。通过示例代码详细介绍,对大家的学习或工作有一定的参考学习价值。有需要的朋友可以参考一下。

问题:

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

根据js引擎的解析,我们将从左到右查找任何未声明的变量,如果是,我们将把该变量提升到作用域的顶部并声明它。恭喜js引擎发现属性a.x没有声明,所以他会在内存区{n: 1}声明一个X属性等待赋值!

语法分析完成后,操作(ps:赋值操作)开始。首先,变量A的指针指向一个新的内存区域{N33602},然后变量A脱离对内存区域{N33601}的引用关系。

但是此时{n:1}这个内存区域还没有被GC回收,因为B变量的指针仍然指向它。而且因为x属性是之前声明的,所以x属性被添加到了内存区域。那么x属性指向哪里呢?A.x=a={n: 2}它的返回值是{n: 2}的内存区域。

然后根据图可以得到:

A.x不存在,因此:=未定义

b.x={n: 2}

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+