变量作用域
- 变量作用域
-
- 在函数体内声明的变量,在函数外无法使用
- 不同函数内的同名变量互不影响
- 内部函数可以访问外部函数的变量,反之不行
- 内部函数与外部函数变量命名冲突
变量作用域
在JavaScript中国,var声明的变量是有作用域的
在函数体内声明的变量,在函数外无法使用
function foo(){
var x = 1;
}
console.log(x);//x is not defined
不同函数内的同名变量互不影响
function foo1(){
var y = 1;
console.log(y);
}
function foo2(){
var y = 2;
console.log(y);
}
foo1();//1
foo2();//2
内部函数可以访问外部函数的变量,反之不行
function bar(){
var x = 1;
function bar2(){
var y = 2;
console.log(x);//1
}
bar2()
console.log(y);//y is not defined
}
bar();
内部函数与外部函数变量命名冲突
function foo3(){
var x = 3;
function foo4(){
var x = 4;
console.log(x);//4
}
foo4();
console.log(x);//3
}
foo3()
这说明JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。