本帖最后由 liumuqi110 于 2011-06-21 16:41:37 编辑

解决方案 »

  1.   

    为什么就是少个 var  结果却出乎意料~~~
      

  2.   

    结果是test just undifne local
    JS是边解析边执行的代码,但是有一点是特殊的,就是在代码加载之前会对属于同一个对象的变量和函数先定义,然后在顺序执行代码。
     var str1 = "global";  
    function scopeTest2(){  
        alert(str1);  
        var str1 = "local";  
        alert(str1);  
    }  
       
    scopeTest2(); 
    这段代码等价于
     var str1 = "global";  
    function scopeTest2(){ 
        var str1 
        alert(str1);  
        str1 = "local";  
        alert(str1);  
    }  
       
    scopeTest2(); 
    对于scopeTest1 第一个alert的 str1  它不属于函数的变量还是属于windows的。所以执行结果就是
    test,第二个alert只是对str1重新赋值而已,但是它仍然是外部变量对于scopeTest2,当代码执行到它的时候,就检索到属于它的函数或者变量有(这里是变量str1 ),所以它先制定对这个变量的定义,但是并未赋值,所以结果第一个alert就是undefine。第二个自然是local
      

  3.   

    检索到属于它的函数或者变量这是不是就是说javascript引擎 先把函数类用到的变量搜索出来 如果是用var定义的就是局部变量 如果未用var定义就是全局变量。 然后在执行其他代码。
    是这样么
      

  4.   

    在所有函数外面定义的变量和未使用var的都是全局的