JavaScript笔记(二)堆栈内存

几个专有名词:
ECStack(Execution Context Stack): 执行环境栈(栈内存)
EC: Execution Context(执行上下文)
EC(G): Execution Context Global(全局执行上下文),供全局代码执行,
VO(G): 全局变量对象,用来存储当前上下文中声明的变量的(存储全局变量的),
GO: GO是一个全局对象,存放很多浏览器内置的API,浏览器端有一个叫做window的全局变量指向它: window.xxx , 
node端有一个叫做global的全局变量指向它,GO是在 堆 中开辟一块空间存放的、
VO/VO(G): 用来存储当前上下文中声明的变量的,他是一个区域 (我们可以把他理解为是栈内存空间),
VO/VO(G)是在每个执行环境上下文(EC)中的、
var a = 12;
代码执行时候拆分为以下三部分

第一步:创建一个值12,12是原始值,创建一个值要存储起来,原始值是直接存储到栈内存中的,
第二步:声明一个变量a,然后要存储起来,存储到当前上下文的VO变量对象中,
第三步:让变量与值关联在一起,关联这个操作叫定义 defined。

创建引用数据类型

var a = { n: 12 }
引用数据不能直接存储在栈内存中,要开辟一个堆内存,把引用数据的值放到堆内存中去,
引用数据值的16进制内存地址存储到栈中,让a变量名与16进制的内存地址关联在一起、

堆栈图

在这里插入图片描述

测试案例:
var a = 12;
function b() {};
let c = 14;
const d = function() {}

在这里插入图片描述

栈结构

特点:后进先出 或者 先进后出
因为:新进栈的内容在栈的顶端,这样会把之前进栈的压缩到栈的底部,出栈也是从顶端开始出,上面的不出去,下面的也出不去。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值