通过实例了解JS 连续赋值

作者:ommph 时间:2024-05-02 16:15:14 

这篇文章主要介绍了通过实例了解JS 连续赋值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

问题:


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

通过实例了解JS 连续赋值

根据js引擎语法解析,会先去从左到右寻找有没有未声明的变量,如果有就把该变量提升至作用域顶部并声明该变量。那么恭喜js引擎他找到a.x这个属性没有声明,那么他会在{n: 1}这个内存区声明一个x属性等待赋值!

语法解析完成后,开始进行运算(ps:赋值运算),首先将a变量的指针指向了一个新的内存区{n: 2},那么a变量脱离了对内存区{n: 1}的引用关系。

但是此时{n:1 }这个内存区并没有被GC回收因为b变量的指针依然指向它。并且因为之前就声明了x属性所以该内存区
增加了X属性。那么X属性指向哪儿呢?a.x = a = {n: 2}它的返回值就是{n: 2}的内存区。

通过实例了解JS 连续赋值

那么根据图上可得:

a.x 不存在,故: => undefined

b.x => {n: 2}

来源:https://www.cnblogs.com/ommph/p/11512588.html

标签:js,连续,赋值,实例
0
投稿

猜你喜欢

  • vue3+ts如何通过lodash实现防抖节流详解

    2024-05-02 16:32:13
  • layer页面跳转,获取html子节点元素的值方法

    2024-04-29 13:43:15
  • Python实现读取txt文件并转换为excel的方法示例

    2023-07-25 15:20:16
  • anaconda python3.8安装后降级

    2021-09-12 05:28:51
  • 动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍

    2023-04-24 19:48:44
  • 基于pandas向csv添加新的行和列

    2021-11-29 02:28:56
  • 在pytorch中动态调整优化器的学习率方式

    2022-08-14 00:30:57
  • Pytorch实现基于CharRNN的文本分类与生成示例

    2023-06-29 03:40:32
  • Python sklearn 中的 make_blobs() 函数示例详解

    2022-07-24 21:45:48
  • 通用的下拉菜单__用DL\\DD\\DT解决无法遮住select的问题

    2008-07-28 13:28:00
  • Windows 下 MySQL 8.X 的安装教程

    2024-01-14 03:05:33
  • python内存管理分析

    2022-04-16 22:03:03
  • mysql复制中临时表的运用技巧

    2024-01-20 10:51:49
  • 新年快乐! python实现绚烂的烟花绽放效果

    2022-01-15 13:18:00
  • SQL Server错误代码大全及解释(留着备用)

    2012-07-11 16:17:03
  • Mysql使用Describe命令判断字段是否存在

    2011-04-25 18:27:00
  • 数据库查询优化(主从表的设计)

    2024-01-18 16:25:52
  • MySql版本问题sql_mode=only_full_group_by的完美解决方案

    2024-01-18 16:08:14
  • python实操案例练习(七)

    2021-09-23 01:01:03
  • python 七种邮件内容发送方法实例

    2022-01-13 21:06:38
  • asp之家 网络编程 m.aspxhome.com