var str = "out";function test(){
 alert(str); 
 var str = "in";
}test();为何弹出“undefined”,而不是“out”呢?就这么点分了,希望指点。

解决方案 »

  1.   

    因为js是先定义后执行的,你的代码等价于 var str = "out";
    function test(){
    var str;
    alert(str); 
    str = "in";
    }
    test();
    这样能理解了吗
      

  2.   


    js的作用域是以function为单位,test方法存在str变量,那么就隐藏了全局的str变量?
      

  3.   

    之前是有帖子讨论过,你这样写法是相当于:var str = "out";function test(){
     var str; 
     alert(str); 
    }test();那个帖子一时没收藏起来,好像是说var会先于其他代码执行,但赋值不会。
      

  4.   

    javascript 预编译 作用域