关于javascript的一个问题

var a =123; function f() { alert(a); var a =1; alert(a); } f();

这段代码为什么第一个 alert出来的是 undefined???

 var a =123; 
function f() { 
alert(a); //这个a是函数f内的A不是全局变量,js在同一个域内,会把所有var要申明的变量先申明了。
var a =1; 
alert(a); 
} f();

所以上面代码也就相当于
var a =123; 
function f() { 
var a;
alert(a); //这个a是函数f内的A不是全局变量,js在同一个域内,会把所有var要申明的变量先申明了。
a =1; 
alert(a); 
} f();

因为你在同一个作用域当中又定义了一个a
你访问的不是全局的a
因为局部a之前没初始化,就没有定义了。
var a =123; function f() { alert(a); } f();
这就不会报错了。

http://www.cnblogs.com/yuzhongwusan/archive/2012/03/09/2387489.html
http://www.360doc.com/content/11/1003/12/6963129_153080771.shtml

把function f()里var a的var删掉就正常了 Lz想测试什么?
变量的作用域?试一下传参?

 var a =123;function f(a) { alert(a); var a =1; alert(a); } f(a);

因为局部a之前没初始化,就没有定义了。

变量申明提前,但是还没有赋值