千巷猫影
执行上下文每当控制器到达ECMAScript可执行代码的时候,控制器就进入了一个执行上下文.执行上下文是个抽象概念,标准中没有从技术实现上定义执行上下文的具体结构和类型.就是一系列活动的执行上下文从逻辑上形成一个栈(比较抽象).栈底总是全局上下文,栈顶是当前(活动的)执行上下文.当在不同的执行上下文间切换(退出而进入新的执行上下文)的时候,栈会被修改(通过压栈或者出栈的形式).变量对象执行上下文的数据是以变量对象的属性形式进行存储的.一个变量对象(简写为VO)是一个和执行上下文相关的特别对象,存储以下内容:变量(声明的变量,var)函数声明(简写为FD)在上下文中,函数声明的形式参数作用域链作用域链是一条变量对象的链,它和执行上下文有关,用于在处理标识符的时候进行变量查询.函数上下文的作用域链在函数调用的时候创建出来,它包含了活跃对象和该函数的内部[[Scope]]属性.执行上下文变量大致如下:activeExecutionContext = {VO:{...},//或者AOthis:thisValue,Scope:[//作用域链,所有变量对象的列表,用来查询标识符]}上面Scope可以定义如下:Scope = AO+[[Scope]]可以用数组进行表示:var Scope = [VO1,VO2,...,VOn];//作用域链