代码分为全局代码和函数(局部)代码
全局执行上下文
- 在执行全局代码前,将windows确认为去全局执行上下文
- 对全局变量进行预处理
- var定义的全局变量=>undefined=>添加为window的属性
- function声明的全局函数=>赋值(fun)=>添加为window的属性
- this=>赋值(window)
- 执行全局代码
函数执行上下文(调用函数的时候开始)
- 在调用函数,准备执行函数体前,先创建对应的函数执行上下文对象(虚拟的,存在于栈中)
- 对局部数据进行预处理
- 形参=>赋值(实参)=>添加为执行上下文的属性
- arguments=>赋值(实参列表)=>添加为执行上下文的属性
- var定义的局部变量=>undefined=>添加为执行上下文的属性
- function声明的函数=>赋值(fun)=>添加为执行上下文的属性
- this=>赋值(调用函数的对象)
- 执行函数体代码