执行上下文与执行上下文栈 - js函数高级
代码分类
-
全局代码
-
局部代码
全局执行上下文
-
在执行全局代码前将window确定为全局执行上下文(GO)
-
对全局数据进行预编译
-
var定义的全局变量添加为window的属性
-
function声明的全局函数添加为window的方法
-
this赋值window
- 开始执行代码
函数执行上下文
-
执行函数体前,创建对应函数执行上下文对象(AO)
-
对局部数据进行预编译
-
形参变量添加为执行上下文的属性
-
arguments添加为执行上下文的属性
-
var定义的局部变量添加为执行下文的属性
-
function声明的函数添加为执行上下文的方法
-
this(调用函数的对象)
- 开始执行函数体代码
执行上下文只在函数执行前的一刻产生
执行上下文栈
-
在全局代码执行前,js引擎会创建一个栈来储存管理所有的执行上下文对象
-
待全局执行上下文(window)确定后,将其添加到栈中(压栈)
-
函数上下文创建后,将其添加入栈中(压栈)
-
当前函数执行完后,将栈顶的对象移除(出栈)
-
所有代码执行完成后,栈中只存在window


浙公网安备 33010602011771号