美文网首页
执行上下文与变量对象

执行上下文与变量对象

作者: _贺瑞丰 | 来源:发表于2017-10-01 09:50 被阅读5次

1. 概述

涉及概念

  • 执行上下文 execution contest
  • 变量对象 variable object
  • 活动对象 active object

执行上下文决定了一个封闭的执行空间,我们在这个空间中声明的变量与函数等数据都是该执行上下文的附属——通过变量对象来保存。
每个上下文拥有自己的变量对象:对于全局上下文,它是全局对象自身;对于函数,它是活动对象

2. 数据声明过程中发生了什么?

在某个执行环境中声明数据时,会将其保存在VO中,比如(变量声明,函数声明,函数形参);
例如:

var a = 10;
function test(x){
  var b = 20;
}
test(30)

对应的变量对象是
//全局上下文变量对象
VO(global context){
  a :10;
  test:<reference to function>
}
//test函数中变量对象
VO(test functioncontest){
  x:30;
  b:20;
}

抽象一下:变量初始化的一般行为

  • 全局上下文变量对象:VO ===THIS == GLOBAL
  • 函数上下文变量对象:VO ===AO,并且添加参数对象和formal parameters

这里出现了一个概念叫AO:活动对象,因为在函数执行上下文中,VO是不能直接访问的,此时由AO扮演VO的角色。活动对象在进入函数上下文时被创建,通过函数的arguments属性被初始化,其值为arguments对象。arguments对象属性包括

  1. Callee:指向当前函数的引用
  2. length:真正传递的参数个数
  3. properties-index

2.1 处理上下文的两个阶段

  1. 进入执行上下文
  2. 执行代码

2.1.1 进入执行上下文

进入时,VO已经包含了:函数所有形参,所有函数声明,所有变量声明。

例子:
function test(a,b){
    var c = 10;
    function d(){};
    var e = function _e(){};
    (function x(){});
}
test(10);
当我们传递10进入函数上下文时
AO(test){
a:10,
b:undefined,
c:undefined,
d:<reference to FD 'd'>
e:undefined
}

2.1.2 执行阶段

AO['c'] = 10;
AO['e']= <reference to fe '_e'>;
这里函数X 是从未被保存在内存中的。

相关文章

  • 变量对象 - 2023-02-09

    变量对象 变量对象是与执行上下文相关的数据作用域,存储了在上下文中定义的变量和函数声明。因为不同执行上下文下的变量...

  • JavaScript深入之变量对象

    JavaScript深入系列第四篇,具体讲解执行上下文中的变量对象与活动对象。全局上下文下的变量对象是什么?函数上...

  • js:执行上下文

    抽象概念:执行上下文,变量对象,激活对象。 执行上下文既执行环境(execution context,EC),当j...

  • JS基础小记

    变量对象与基础数据类型 JavaScript的执行上下文生成之后,会创建一个叫做变量对象的特殊对象,JavaScr...

  • 执行上下文

    什么是执行上下文 执行上下文(Execution contexts)是指 函数调用 在执行栈中产生的变量对象 执行...

  • 执行上下文与变量对象

    1. 概述 涉及概念 执行上下文 execution contest 变量对象 variable object 活...

  • 2019-03-13 执行上下文、函数堆栈

    概念 EC:函数执行环境(执行上下文) ECS:执行环境栈 VO:变量对象 AO:活动对象 scope chain...

  • 深入学习JS执行--创建执行上下文(变量对象,作用域链,this

    一、介绍 这次我们来深入了解js执行过程中的执行上下文。 本篇涉及到的名词:预执行,执行上下文,变量对象,活动对象...

  • 变量函数提升与执行上下文

    变量与函数提升 作用域与执行上下文的区别 执行上下文 执行上下文栈 作用域 作用域链

  • 一个例子 - 看尽javascript执行过程

    本文涵盖的知识点: 执行上下文和执行上下文栈,作用域和作用域链,变量对象,活动对象,this, apply, ca...

网友评论

      本文标题:执行上下文与变量对象

      本文链接:https://www.haomeiwen.com/subject/xoxnextx.html