前端开发工程师吧 关注:32贴子:149
  • 6回复贴,共1

Javascript 没有块级作用域深入理解

只看楼主收藏回复

Javascript没有块级作用域,在其他类C语言中,花括号封闭的代码都有的自己的执行环境。
例如:
if(1){
var color = "blue";
}
alert(color);


IP属地:上海1楼2014-04-01 15:16回复


    IP属地:上海2楼2014-04-01 15:19
    回复
      2025-05-28 19:27:13
      广告
      if语句中声明的变量添加到当前的执行环境(全局环境)中,这个一般我们没有注意到这一点。还有for语句
      例如
      for(var i=0; i<10; i++){
      window.console.log(i);
      }
      alert(i);//10


      IP属地:上海3楼2014-04-01 15:22
      回复
        for语句创建的变量i,在for循环执行完成后,依然会存在for循环的外部执行环境中。


        IP属地:上海4楼2014-04-01 15:24
        回复
          在作用域链上搜索标示符的理解
          例如:
          var color = '"blue";
          function getColor1(){
          return color;
          }
          getColor();//blue
          function getColor2(){
          var color = '"red";
          return color;
          }
          getColor();//red


          IP属地:上海5楼2014-04-01 15:36
          回复
            在搜索过程,会先去在局部环境中查找是否含有一个color的变量,没有的话会在父环境中继续查找,直到全局环境,全局也没有,就会得到undefined。


            IP属地:上海6楼2014-04-01 15:40
            回复
              上面这个例子解释了javascript中变量查找过程,沿着作用域链一级一级向上查找。


              IP属地:上海7楼2014-04-01 15:42
              回复