执行环境以及作用域

按照小编的理解,应该呢,是先创建执行环境,然后通过执行环境来创建该环境的作用域链,毕竟,在实际中,函数有很多。

执行环境execution context,为简单起见,有时也称为 “环境”)是 JavaScript 中最为重要的一个概念。

  1. 环境的定义:执行环境定义了 变量或函数 有权访问的 其它数据,决定了它们各自的行为。
  2. 环境有作用域分为哪些:分为 全局执行环境 和 局部执行环境两种,其中全局执行环境是最外围的一个执行环境,根据ECMAScript 实现所在的宿主环境不同,表示执行环境对象也不一样。在web浏览器中,全局执行环境是 window 对象。
  3. 环境的产生:每个函数在被调用时都会创建自己的 环境,在某个执行环境中,所有的代码执行完毕后,该环境就会被销毁,而全局执行环境则是整个程序退出被销毁,例如网页或则浏览器关闭。
  4. 环境的运作方式:环境产生之后,当执行流进入一个函数时,函数环境就会被推入一个环境栈中,而在函数执行完毕(环境被销毁),栈将其弹出,把控制权交给之前的执行环境。
  5. 每个执行环境都有一个与之关联的 变量对象(variable object),环境中定义的所有变量和函数都会保存在这个对象中,这个对象是不可见的,但解析器也可以访问到他们。

  code:

var color ="red";

function changeColor(){
    var anotherColor = "blue";

    function swapColors(){   //变量互换

        //在这里可以访问到 annotherColor,color和 tempColor
        var tempColor = anotherColor;
        anotherColor = color;
        color = tempColor;
    }

    //这里可以访问到 anotherColor和color
    swapColors();
}

//这里可以访问到 color
changeColor()
View Code

相关文章: