javascript变量分为全局变量和局部变量。局部变量的优先级又比全局变量的高。
下面看几个例子:
var a=0;
function test() {
console.log(a);
};
test(); //输出0
a为全局变量,函数能访问到 var a=0;
function test() {
var a= 1;
console.log(a);
};
test(); //输出1
局部变量的优先级比全局变量的优先级高
var a=0;
function test() {
console.log(a);
var a= 1;
console.log(a);
};
test(); //输出undefined,1
这是为什么呢?
我们来看下面这个例子
var a=0;
function test() {
console.log(a);
var a= 1;
console.log(a);
};
function test2(){
console.log(a);
};
test();
test2(); //输出undefined,1,0
全局变量a在test2()输出,这就说明全局变量并未销毁。那为什么在test()中会打印undefined呢?
我的理解是这样的:由于局部变量的优先级高,当执行此js代码时,执行器已经为test()的局部变量a进行声明,给a一个空间,但是并没有赋值,而是在test()中执行到var a=1时才对这个空间赋值。所以第一个打印出undefined。