作用域和作用域链 —javascript面向对象高级

# 作用域和作用域链 #

  ## 1.作用域 ##

     定义:函数声明时,会确定当前函数的作用域,所谓作用域就是作用的范围(地盘)
    
  全局作用域:

           a. window是顶层对象,是一切函数,变量,对象的终点,
           b. 所以在全局范围内定义的函数或变量,它都是属于window对象的属性或方法。
           c. 其作用域范围是全局,任何地方均能调用。



  局部作用域:

          a. 函数声明时,函数内部的作用域就是局部作用域,
          b. 在函数内部通过var 声明的变量 和 声明式的函数均是该函数的私有变量或函数,
          c. 一般情况下,函数外部不能访问函数内部的私有变量或函数


  作用域链:

          a.函数内部调用某个变量的时候,会在当前作用域中查找该变量是否被声明
          b.如果没有被声明,就会去其上一层作用域中查找
          c.直到查找到全局作用域,如果还是没有,则为not define

  

  作用域和执行上下文的关系:
             
     var a = 10, b = 10;
       function fn(x){
          var a = 100,c = 200;
              function  bar(x){
                 var a = 1000,d = 4000;
              }
           bar(100)
           bar(200)
       }
     fn(10)

   全局作用域 : 上下文环境内保存 a = 10,b = 10
   fn作用域 : 上下文环境内保存 a = 100,x = 10 ,c = 200
   bar作用域:上下文环境内保存 a = 1000,d =4000,x = 100(第一次调用) 200(第二次调用)

posted on 2016-12-05 22:45  唐小青  阅读(185)  评论(0编辑  收藏  举报

导航