参考
https://www.jianshu.com/p/3b5f0cb59344
https://jingyan.baidu.com/article/4f34706e18745be386b56d46.html
1. 作用域
在ES5之前JS没有块级作用域({}内部声明的变量只能够在{}内部访问到,在{}外部无法访问到其内部声明的变量),有函数作用域。
2. 作用域链
当我们在局部作用域中,访问一个变量时,系统首先会在当前作用域中寻找变量var的声明语句,如找到则直接使用。反之,则继续向上一级作用域中寻找var的声明语句,如找到则直接使用,反之,继续向上一级作用域中去寻找…直到全局作用域
例子,尝试注释掉每个f的num
<script>
var num = 10;
function f1() {
var num = 20;
function f2() {
var num = 30;
function f3() {
var num = 50;
console.log(num);
}
f3();
}
f2();
}
f1();
</script>