for (var i = 0; i < 4; ++i) {
alert(i)

}
alert(i)//这为什么会弹出4 ??

解决方案 »

  1.   


    i不是私有变量~·javascript没有私有~·i是window对象的一个变量~·在那都能被访问~·循环停止时i == 4 条件不成立~·所以alert(i) 为4
      

  2.   

    变量作用域(http://www.javaeye.com/topic/285495
      

  3.   

    javasript 不同于C,java等强类型的编译语言,它没有块作用域的概念。
    在代码中声明的i被作为全局变量(也就是window对象的一个属性)使用。所以输出是4但是如果在函数中用var声明,则i会作为函数的部分变量。function showMsg(aMsg){
    var i = 4;
    alert(i);
    }alert(i);
    你可以试一试上面这个代码的效果。
      

  4.   

    <html>
    <head>
    <title></title>
    <script type="text/javascript">
    function vartest(){
    var i=0;
    for(;i<4;++i){
    alert(i);
    }
    alert(i);
    function vv(){
    alert(i);
    }
    vv();
    }
                          vartest();
    </script>
    </head>
    <body>
    </body>
    </html>
    应该跟解释器的循序有关,先将js中的函数解释出来分配空间,在将函数中的变量或者内嵌子函数给分配空间
    那样考虑的话,那么整个函数内就没有什么私有变量了
      

  5.   

    以上为个人观点,有错希望大虾们指点,var i=0;可以在for里面