js执行环境、作用域

js执行环境、作用域

  • 执行环境:是javascript中的一个重要的概念,《javascript高级程序设计第三版》的定义是:执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为。执行环境其实就是一个概念,一种机制

  • 执行环境作用:执行环境就是用来完成javascript运行时在作用域、生存期等方面的处理。

  • 变量对象:每一个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。

  • 全局执行环境:最外围的一个执行环境,根据ECMAScript实现所在的宿主环境不同而不同,在Web浏览器中,全局执行环境被认为是window对象。

  • 执行环境的销毁:当调用一个javascript函数时,该函数就会进入该函数相对应的执行环境,如果又调用的另一个函数,则会又创建一个新的执行环境,并且在函数调用期间都在这个环境中,直到函数调用完成,该环境就会被销毁,其中的变量和方法也会被销毁。总的就是说,当一个函数被调用时,执行流就进入这个函数,该函数的环境就会被推入一个环境栈中,当函数执行完后栈就会把这个函数的环境弹出。把控制权返回给之前的环境。

  • 作用域:就是一个函数的即将执行的执行环境的大小(还没被调用之前)。

  • 作用域链:当一个函数在他的执行环境中被执行时,就会创建变量对象的一个作用域链,他的用途就是保证对执行环境有访问权限的所有变量和函数进行有序的访问。

      var  color = 'blue';
      function changeColor(){
          var color1 = 'red';
          function litileColor(){
              var color2 =color1;
              color1 = color;
              color =color2;//这里可以访问color  color1  color2
          }
          //这里可以访问color color1,但是不能访问color2
          litileColor();
      }
      //这里只能访问color
      changeColor();
    

上面这个例子就建立了一个四级的作用域链,还说明了内部环境可以通过作用域链访问外部作用域链,但是外部环境不能访问内部环境。

原文地址:https://www.cnblogs.com/yehui-mmd/p/6510333.html