作用域
作用域是当前的执行上下文,它规定了变量的可访问范围。在程序执行时,JS 引擎会根据变量声明的位置来确定其作用域。
分类
ES6 之前只有全局作用域和函数作用域,ES6 增加了块级作用域
全局作用域
- 在代码中任何地方都能访问到的变量称为全局变量,拥有全局作用域 
- 所有未定义直接赋值的变量自动声明全局变量 
- 全局变量会成为全局对象的属性 
函数作用域
在函数内部定义的变量只能在函数内部访问,拥有函数作用域
块级作用域
- ES6 新增了块级作用域,由 - let和- const定义的变量只能在块级作用域中被访问
- 存在“暂时性死区”,即在代码块中,在使用 - let和- const声明变量之前,变量不可用
作用域链
- 作用域之间可以存在嵌套的关系,作用域链是由嵌套作用域组成的链式结构 
- 在访问变量时,JS 引擎会沿着作用域链由内向外搜索变量,直到找到或向上追溯到全局作用域为止 
