执行上下文

68 阅读1分钟

执行上下文

当Javascript代码执行一段可执行代码时,会创建对应的执行上下文

函数执行上下文: 一个函数运行之前,创建的一块内存空间,空间中包含该函数执行所需要的数据,为函数执行提供支持。

全局执行上下文: 所有代码执行前,都必须有该环境

执行上下文栈

js引擎创建了执行上下文栈来管理执行上下文,且执行的始终是栈顶的上下文。

栈:一种数据结构,先进后出,后进先出(薯片桶)。

执行上下文中的内容

1.this指向 1) 直接调用函数,this指向全局对象 2) 在函数外,this指向全局对象 3) 通过对象调用或new一个函数,this指向调用的对象或新对象

2.Vo变量对象

Variable Object:VO 中记录了该环境中所有声明的参数、变量和函数

Global Object: GO,全局执行上下文中的VO

Active Object:AO,当前正在执行的上下文中的VO

代码执行时: 1). 确定所有形参值以及特殊变量arguments 2). 确定函数中通过var声明的变量,将它们的值设置为undefined,如果VO中已有该名称,则直接忽略。 3). 确定函数中通过字面量声明的函数,将它们的值设置为指向函数对象,如果VO中已存在该名称,则覆盖。

当一个上下文中的代码执行的时候,如果上下文中不存在某个属性,则会从之前的上下文寻找。