变量作用域
局部变量:在函数内部定义的变量,这个变量只能够在函数的内部使用,在全局中不能够使用。比如在三国时期,袁术称帝后,只有袁术阵营的人才认为他是皇帝,他发布的命令只有在本阵营里面起作用。但是其他人不认为他是皇帝,他发布的命令没有作用。
function localVar(){
var a = 1;
alert(a);
}
localVar();
alert(a);
在函数内部定义一个变量,如果没有加上var ,那么这个变量被认作为全局变量。
function localAllVar(){
a = 1;
}
function test(){
alert(a);
}
localAllVar();
test();
全局变量
在函数外部定义的变量,这个变量可以在全局进行使用。比如汉朝的皇帝发布了命令,那么不管是袁绍还是曹操都要听这个命令。
var a = 1;
function allVar(){
alert(a);
}
allVar();
冲突处理原则:就近原则。
当函数中定义了一个和全局变量名相同的变量,此时在函数中在定义前使用,那么这个变量还是函数中的变量,为undefined,不使用全局变量。
要理解就近原则,而不是从上到下。
var a = 1;
function doubleVar(){
var a = 2;
var a = 3;
alert(a);
}
局部和全局同时定义了一个相同名字的变量时如何在局部里面访问全局变量?在局部中给变量加上window的前缀,就可以访问到全局的变量。
var a = 1;
function doubleVar(){
var a = 2;
var a = 3;
alert(a);
alert(window.a);
}