美文网首页程序员
*函数作用域原理[JavaScript_006]

*函数作用域原理[JavaScript_006]

作者: 六亲不认的步伐 | 来源:发表于2019-03-13 11:17 被阅读3次

    作用域


    函数的属性

      function test(){
    
      }
      //可使用的属性例如 test.arguments; test.name等
      //不可访问的属性test.[[scope]](隐式属性,系统自行调用),存放的内容为作用域,执行期上下文的集合
    

    执行期上下文(可以理解为AO)


    • 详解:在执行前(预编译期间),产生的内部对象AO;完成函数执行后执行上下文销毁;执行多次函数,产生多个AO;

    [[scope]]详解


    作用:存储各个变量作用域,存储形式类似与数组(单链表)

    • 示例详解
    function a(){
        function b(){
            var b =234;
        }
        var a = 123;
        b();
    }
    var glob =100;
    a();
    
    • 自己做了一些图解,便于理解


      a的相关作用域存储原理
      b的相关作用域存储原理
    • 注意几点
      1. b函数在定义时和a函数在执行时的AO对象指的都是a函数的AO
      2. AO对象始于预编译,终于调用完成
      3. 若对方法进行两次或两次以上的调用,其中的AO对象内容一致(递归除外),但是对象并不一致,可以理解为存储AO的内存地址发生了变化 (此处理解为个人理解)

    相关文章

      网友评论

        本文标题:*函数作用域原理[JavaScript_006]

        本文链接:https://www.haomeiwen.com/subject/nbzopqtx.html