执行环境-全局上下文

136 阅读1分钟

全局上下文,对应的就是全局,也即是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结果

image.png

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,
> }

2.3结果

image.png