function test(){
var a=10;
var a=100;
alert(a);
}
test();//输出100
function test2(){
var a=10;
var a;
alert(a);//输出10  
}
test2();
第二个函数 怎么不是undefined 啊

解决方案 »

  1.   

    其实等价于下面function test() {
        var a;
        a = 10;
        a = 100;
        alert(a);
    }
    test(); //输出100
    function test2() {
        var a;
        a = 10
        alert(a); //输出10   
    }
    test2();
      

  2.   

    可以去了解一下javascript预编译
      

  3.   

    var a=100;
    var a; //再次声明变量,但是没有赋值,它仍用原来100的值。
    http://www.w3school.com.cn/js/js_variables.asp
    重新声明 JavaScript 变量
    如果您再次声明了 JavaScript 变量,该变量也不会丢失其原始值。
      

  4.   

    js中变量的声明和赋值不是同时进行的;声明是在函数最开始进行的,所以你将a变量声明两次,但最终只有一个,赋值后就是10了,也就是说看着第二个var a声明在第一次赋值后面,但它实际在函数最初就执行了。