Js中的堆(heap)和栈(stack)内存

文章详细介绍了JavaScript中的堆和栈内存,以及数据类型的区分,特别是基本类型和引用类型的存储差异。并通过两道面试题的解析,展示了变量赋值和对象引用在栈和堆中的不同操作和影响,强调了引用类型在内存中的共享特性。
摘要由CSDN通过智能技术生成

1、堆和栈的概念

  • 在JS钟变量都存放在内存中,而内存给变量开辟了两块区域,分别为栈区域堆区域
  • 栈(stack):是栈内存的简称,栈是自动分配相对固定大小的内存空间,并由系统自动释放,栈数据结构遵循FILO(first in last out)先进后出的原则
  • 堆(heap):是堆内存的简称,堆是动态分配内存,内存大小不固定,也不会自动释放,堆数据结构是一种无序的树状结构,同时它还满足key-value键值对的存储方式;我们只用知道key名,就能通过key查找到对应的value。

2、数据类型

  • 在JS中说到堆和栈就离不开普通数据类型和引用数据类型。
  • 在JS中普通数据类型它是在栈内存在创建的,而引用数据类型则是在堆内存中创建的。
  • 基本类型:采用的是值传递。
  • 引用类型:则是地址传递。

3、腾讯面试题

第一题、

 let a = 0;
 let b = a;
 b++;
 alert(a);

结果:

"0" // 字符串0

执行分析:
请添加图片描述

  1. 在vo执行机制中采取三步走的形式:
    1.1 创建变量
    1.2 创建值
    1.3 关联
  2. 由于上述代码是普通数据类型,所以是在栈中创建
  3. 代码分析:
let a = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方青云、

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值