js 堆栈内存

变量

JavaScript 中的变量分为基本类型和引用类型,对变量的存储主要有两种位置,堆内存和栈内存。

栈内存

栈内存主要用于存储各种基本类型的变量,包括 Boolean、Number、String、Undefined、Null,以及对象变量的指针。栈内存中的变量一般都是已知大小或者有范围上限的,算作一种简单存储。一般情况下,当函数执行完成,所形成的私有作用域(栈内存)都会自动释放掉,但是也有特殊的情况(闭包)。

堆内存

主要负责像对象 Object 这种变量类型的存储,而堆内存存储的对象类型数据对于大小这方面,一般都是未知的。堆内存利用空对象指针 null 来释放空间。JavaScript 不允许直接访问堆内存中的位置,因此操作对象时,实际操作对象的引用,当我们要访问堆内存中的引用数据类型时,首先要先从栈内存获得该对象的地址,然后再从堆内存中取得数据。

基本类型在当前执行环境结束时销毁,而引用类型只有当所有引用它的变量都不存在时这个对象才被垃圾回收机制回收。

堆栈内存对比

堆内存 栈内存
存储基本数据类型 存储引用数据类型
直接访问数值 按照引用访问
存储空间系统分配</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值