关于执行环境(上下文)、全局变量对象VO、活动对象AO、全局对象GO

本文详细介绍了JavaScript中的全局和函数执行上下文,强调了全局变量对象VO、活动对象AO和全局对象GO的关系。在全局执行环境中,VO与GO(window对象)紧密关联,而函数执行环境下,活动对象AO存储函数内的变量。执行上下文的创建和执行过程也被清晰地阐述,包括函数在内存中的存储方式以及执行后的控制权转移。
摘要由CSDN通过智能技术生成

全局执行上下文/函数执行上下文(局部)

先来总结下名词:
VO:全局变量对象
AO:活动对象 (也叫函数的变量对象)
GO:全局对象(window)
EC:执行环境
ECStack:执行环境栈(调用栈)
环境=上下文 

每个执行环境有自己对应的变量对象,函数执行环境是把活动对象作为变量对象,在作用域中定义的变量保存在对应执行环境中的变量对象中(注意:执行环境本质上不等于作用域,但是二者是一 一对应关系)

全局执行环境

浏览器加载html页面,最先创建、进入的就是全局执行环境 (即创建执行环境,把该执行环境压入到ECStack中),全局执行环境中有对应的全局变量对象VO,还有一个全局对象GO,GO其实就是window对象,在全局作用域中定义的变量会保存在VO中,并且会映射为window对象属性或方法(let、const定义的变量不会被映射)

函数执行环境

:函数已定义,但未执行,此时函数在哪?
:在函数已定义,但是未调用前,函数老老实实躺在堆中保存着,为什么呢,就因为函数也是对象,既然是对象,那么就在堆中存储

:函数在堆中怎么存储的?
:键值对! 有属性名:属性值 这样的一对对键值对,比如name: “函数名” length: 参数个数 等等

:函数的可执行代码在哪?
&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值