在ES6出来之前,js的作用域只有全局作用域和函数作用域。
我们把定义在全局作用域中的变量,成为全局变量,定义在函数里面的称之为局部变量。
他们之间有个规律:
函数里面能访问外面的变量,而函数外面不能访问函数里面的变量
举例:
var a = 1;
function fn() {
var b = 2;
console.log(a);//函数里面能访问外面的变量
innerFn();
function innerFn() {
var c = 3;
console.log(a);//函数里面能访问外面的变量
console.log(b);//函数里面能访问外面的变量
}
fn();
}
但是如果在innerFn外面访问变量c,或者fn外面访问b或c,都会报错!
这有点像生活中的单向透视玻璃,里面能看到外面,外面看不见里面。
![](https://img.haomeiwen.com/i17785871/b24562a3cb1de465.png)
网友评论