执行上下文是一个虚拟对象。分为全局执行上下文和函数执行上下文。
1.全局执行上下文
步骤:
- 在执行全局代码前,将window对象确定为全局上下文
- 然后对全局数据进行预处理,包括三个。
预处理:
1.变量提升:var 定义的全局变量=undefined,添加为window的属性
2.函数提升:声明式函数提升,添加为window的方法,优先于变量提升
3.this指向:将this指向为window
2.函数执行上下文
步骤:
- 执行函数体之前,创建函数执行上下文对象
- 然后对局部数据进行预处理
预处理
1.形参变量:将实参赋值给形参变量,添加为执行上下文的属性
2.arguments:将实参列表赋值给arguments,添加为执行上下文属性
3.变量提升:var 定义的全局变量=undefined,添加为执行上下文的属性
4.函数提升:声明式函数提升,添加为执行上下文的方法,优先于变量提升
5.this指向:将this指向为调用函数的对象