问题描述
- 关于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之前没初始化,就没有定义了。
解决方案六:
变量申明提前,但是还没有赋值
时间: 2024-09-29 14:33:06