全局上下文,对应的就是全局,也即是window对象内的。
global object 全局上下文。
1.执行流程
①var申明变量
②找函数申明
③逐行执行代码
1.1案例
test();
var a = 1;
function test(){
console.log(666);
}
console.log(a);
1.1.2分析
第一步:找var申明 a=undefiend
第二步:找函数申明 function test(){console.log(666)}
第三步:逐行执行 a=1;
1.1.3图解
GO{
a:undefined,--->
1,
test:function test(){console.log(666)}
}
1.1.4结果
2.全局&函数上下文的案例
var b=3;
console.log(a);//全局的a
function a(a){
console.log(a);//函数的a
var a=2;
console.log(a);
function a(){}
var b=5;
console.log(b);
}
a(1);
2.1分析
先分析 GO全局上下文,在AO函数上下文
全局上下文:
第一步:找var申明 b=undefined
第二步:找函数申明 a=function a(a){...} //太长省略
第三步:逐行执行 b=3
函数上下文:
第一步:找形参和var申明 a=undefiend b=undefined //注意a名字已被使用var a等于无效
第二步:实参赋值给形参 a=1
第三步:找函数申明,赋值 a=function a(){} //找到函数a(){} 则 a=函数a(){}
第四步:逐行执行,a=2 b=5
2.2图解
> GO {
> b:undefined,--->
> 3,
> a:function a(){...}
> }
>
> AO{
> a:undefined,--->
> 1,
> function a(){},
> 2,
> b:undefiend,--->
> 5,
> }