js的执行环境

  • 当在某个环境中为了读取或写入而引用一个标识符时,必须经过搜索来肯定该标识符实际代码啥。搜索过程是从做用域链前端开始的,向上逐级查询,若是在局部环境中没有找到,则会沿着做用域链向上寻找,直到全局做用域,如还没找到,则报错。
  • 经过下面这个栗子,来更好的理解搜索寻找过程
    var color = "blue";
    function getColor (){
    return color;
    }
    alert(getColor());//"blue"
  • 调用案例中的函数getColor()时会引发变量color,为了肯定变量color值,会开始一个搜索过程,首先会先搜索函数内部(局部环境)是否存在名叫color的变量,在没有找到的状况下会在下一个环境(全局环境)中搜索,在哪里搜到了定义这个变量。
  • 下面的图形形象的展现了整个搜索过程。
  • 在这个过程当中,若是在局部环境中(getColor函数内部)存在一个color的变量,则搜索就自动中止。好比下面的栗子 var color = "blue";
    function getColor (){
    var color = "red";
    return color;
    }
    alert(getColor());//"red"
  • 修改后的代码在getColor()函数内部声明了一个名为color的局部变量,调用该函数时,改变量就会被声明,而当第二行代码执行时,意味着必须找到并返回变量color的值,搜索过程会先从局部环境中开始,并且在局部环境中发现了一个名为color的变量,其值为"red",到此,搜索结束。return语句返回的color的值就是局部环境中获得的"red"。
执行环境分为:全局执行环境(全局环境)和函数执行环境(局部环境)
函数执行环境(局部环境)不只有权访问函数做用域中的变量,并且有权访问其包含父环境,设置是全局环境中的变量;
全局执行环境则只能访问全局环境中定义的变量和函数,而不能直接访问局部环境中的任何数据。
复制代码
相关文章
相关标签/搜索