最近通过询问研究了一下js的局部变量和全局变量,一下找的例子然后注释的自己的理解。
var a =1; //全局变量 var a =1;
function test(){ function test(){
alert(a); var a;
var a = 2; //声明局部变量,声明提前。变量在这里赋初始值, alert(a);
但变量本身在函数体内任何地方均是有定义的。 a = 2;
alert(a); 等价于 alert(a);
} }
test(); test();
alert(a); alert(a);
//有两个变量,一个局部变量。一个全局变量。在函数体内,局部变量覆盖了同名全局变量。
只有程序执行到var语句时,局部变量才被真正赋值。在函数体内,局部变量的优先级高于同名的全局变量。如果在函数内声明的一个局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量就被局部变量所遮盖。
undefined, 2, 1
var a =1;
function test(){
alert(a);
a = 2; //函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!
alert(a);
}
test();
alert(a);
//有一个变量
1 2 2
var a =1; var a =1;
function test(){ function test(){
alert(a); var a;
a=4 alert(a);
alert(a); 等价于 a=4
var a; alert(a);
alert(a); alert(a);
} }
test(); test();
alert(a); alert(a);
上面的例子结果依次为:undefined, 4, 4, 1