作用域
某个变量合法的使用范围,分为如下三种:
- 全局作用域
最高级对象的一个属性,web端是window
函数作用域
function fn () {
var a = 100;
console.log(a);
}
console.log(a); // 别的地方使用就会报错,a is not defined
块级作用域(ES6)
if (true) {
// 块级作用域
let a = 100;
console.log(a)
}
console.log(a); // 别的地方使用就会报错,a is not defined
自由变量
一个变量再当前作用域未定义,但被使用了
向上级作用域,一层一层依次寻找,直到找到为止;
如果在全局作用域都没找到,则报错:xxx is not defined
(所有)自由变量的查找,是在函数定义的地方,向上级作用域查找,不是在执行的地方
作用域链
变量一层一层向上找的过程,直到找到全局作用域