全局上下文:
1.首先将window确定为全局上下文
2.第二步对全局变量进行预处理
①var定义的全局变量都为undefined值,同时将其添加为window的属性
②function声明的函数和其函数体添加为window的方法
③这时的this是window
3.开始执行全局代
函数上下文:如下代码
var a1 = 3;
function fn (a1) {
console.log(a1); //2
console.log(a2); //undefined
a3(); //a3()
console.log(this); //window
consolo.log(arguments) //2,3
var a2 = 3;
function a3() {
console.log('a3()')
}
}
fun(2,3)
函数执行上下文顺序:
①在调用函数,准备执行前,串键对应的函数执行上下文对象
②对局部数据进行预处理
-形参变量==>赋值(实参)==>添加为执行上下文的属性
-arguments==>赋值(实参列表),添加为执行上下文的属性
-var定义的局部变量的值为undefined,添加为执行上下文的属性
-function声明的函数==>赋值,添加为执行上下文的方法
-this==>赋值,this为调用该函数的
③开始执行函数代码