1、作用域:在运行时代码中的部分特定变量、函数、对象的可访问性。作用域决定了代码区域中变量和其他资源的可见性。
通俗理解:作用域就是一个地盘,让变量不会泄露,暴露出去。作用域最大的作用是隔离变量,不同作用域下同命名变量不会有冲突。
在ES6之前只有全局作用域和函数作用域,ES6之后,又提供了块级作用域,可通过let,const
2、作用域链
自由变量:在当前作用域没有定义的变量
作用域链:在当前作用域查找变量,未查找到,再一层一层向上查找,直到全局作用域还没找到,就放弃。这种一层一层的关系,就是作用域链。