小鸟在看《javascript权威指南》第5版中看到变量的作用域。
有一段写道:javascript不用与C++,JAVA没有块级的概念   示例: function f1(){
          var a = 1;
          function f2(){
            var b = 2;
          }
         alert(b); // 在书上说这样可以警告2的
       }但我自己测试时是会报错。  所以我现在弄不明白到底是书写错了,还是javascript的一个版本的特性

解决方案 »

  1.   

    写错了.
    里面的闭包函数的作用域和外面的不同,外面会提示b undefine
      

  2.   

    就只有这两段代码的话,会弹出undefined
      

  3.   

    不会出现这种错误 吧,书上应该是直接b=2;没有var吧
      

  4.   

    ie 7.0运行你的代码直接报'b'为定义的错误。
    function f1(){ 
              var a = 1; 
              function f2(){ 
                this.b = 2; 
              } 
            alert(new f2().b); 
          } 
    这样弹出的是2
      

  5.   

    LZ你写的对么?你说的是4.3.1吧!我手边就有英文版的.代码部分即使是中文的也应该不会有出入.完整的是这样吧:var scope="global";
    function f(){
        alert(scope);
        var scope="local";
        alert(scope);
    }
    f();
      

  6.   

    是这个?var scope="global scope";
    function checkscope(){
        var scope="local scope";
        function nested(){
                var scope="nested scope";
                document.write(scope);
        }
      nested();
    }
    checkscope();
      

  7.   

    不好意思写错了。。是
    function test(){
    var i = 0;
    if(true){
    var j = 0;
    }
    alert(j);
    }JS中是没有会计概念吗? 只有全局和局部(在函数体内)
      

  8.   

    JS中是没有会计概念吗? 只有全局和局部(在函数体内)
    re:
    什么开发语言都是局部和全局变量之分!不过js的比较微妙!象闭包!
      

  9.   

    块级是指if for之类
    你那个是函数级了