JavaScript中全局变量和局部变量
如下函数:
var a = 5;
function test(){
alert(a);
var a = 2;
alert(a);
}
此时第一个alert()所显示的是什么呢?
答案是 undefined;这是因为在JavaScript中局部域优先于全局域,
所以局部变量a会覆盖所有与他同名的全局变量。
当执行这个函数的时候所有的局部变量会默认把变量提到函数最开始的地方,但是只有函数的声明被提到最前面,
它的赋值不会被提到前面,所以第一个alert()就会显示undefined。
所以这个例子可以改写为如下函数:
var a=5;
function test(){
var a;
alert(a);
a=2;
alert(a);
}