作用域&作用域链

205 阅读1分钟

基于执行环境进行作用域的分析,但是省略执行环境的分析!
函数也是对象类型 引用类型
[[scope]]域
1.函数创建,会生成一个JS内部的隐式属性__proto__
2.函数存储作用域链的容器,作用域链
3.AO(activation object)/GO(global object)
①AO函数的执行器上下文 ; GO全局的执行器上下文;
②函数执行完毕之后,AO是要销毁的 ; AO是一个即时容器
4.自己的AO作用域排在顶端,从上往下找数据
5.当函数执行时前一刻生成它自己的AO作用域

1.案例

    function a(){
        function b(){
            var b=2;
        }
        var a=1;
        b();
    }
    var c=3;
    a();

1.2 流程

a()的作用域链

①a函数定义时 image.png

②a函数执行时 image.png

b()的作用域链

①b函数定义时(实际是上级a函数执行的作用域链) image.png

②b函数执行时 image.png