zoukankan      html  css  js  c++  java
  • JS学习笔记 之 作用域链

    作用域,作用域链精解
    函数          -->     函数类对象
    可访问的属性:包括test.name test.prototype等
    不可访问的属性:如test.[[scope]]
           ↓                               
                            由于函数执行而产生的作用域链->存储了执行期上下文的集合 ->呈链式连接
    仅供javascript引擎存取                                                    ↓
                                                     函数每次执行时,对应独一无二的执行期上下文,执行完毕即销毁
     
    (在某函数中)查找变量:从(该函数的)作用域链顶端,依次向下查找
     
    作用域链图解
    注意:下例中,b的定义是在a执行时产生的,a没有执行的话就没有b的定义
     1  function a(){
     2      function b(){
     3         var b = 234;
     4       }
     5      var a = 123;
     6      b();
     7  }
     8         
     9  var glob = 100;
    10  a();
    访问变量时,查找的是执行时的作用域链
    a defined:      -->     0 : GO    全局中的函数被定义时,生成全局的上下文
    a execute:      -->     0 : AO    全局的函数执行时,产生自己的独一无二的执行期上下文,链接到全局的上下文,形成自己的作用域链
                                    1 : GO
     
    b defined:       -->    0 : aAO    局部的函数被定义时,首先拿到已有的外部函数的上下文
                                     1 : GO
    b execute:       -->     0 : bAO    局部函数执行时,生成自己的独一无二的执行期上下文,链接到先前已经拿到的外部函数的上下文
                            -->     1 : aAO
                            -->     2 : GO
     
     

    b在a内部定义,直接继承了a的作用域链(直接引用,指向的就是原来A的AO),接着,在执行时,将生成的自己的AO链接到继承的作用域链的顶端

  • 相关阅读:
    bzoj 4606: [Apio2008]DNA【dp】
    UOJ #206. 【APIO2016】Gap【交互题】
    bzoj 4071: [Apio2015]巴邻旁之桥【splay】
    bzoj 4069: [Apio2015]巴厘岛的雕塑【dp】
    bzoj 4070: [Apio2015]雅加达的摩天楼【spfa】
    洛谷 P3625 [APIO2009]采油区域【枚举】
    bzoj 1178: [Apio2009]CONVENTION会议中心(少见做法掉落!)【贪心+二分】
    bzoj 1179: [Apio2009]Atm【tarjan+spfa】
    洛谷 P3621 [APIO2007]风铃【贪心】
    bzoj 4898: [Apio2017]商旅【Floyd+分数规划+二分】
  • 原文地址:https://www.cnblogs.com/seveinn/p/11801893.html
Copyright © 2011-2022 走看看