作用域
某个变量合法的使用范围,分为如下三种:
- 全局作用域
最高级对象的一个属性,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
(所有)自由变量的查找,是在函数定义的地方,向上级作用域查找,不是在执行的地方
作用域链
变量一层一层向上找的过程,直到找到全局作用域
