🌟 作用域(Scope)
作用域
- 解释:作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。
- 作用:作用域最大的用处就是
隔离变量,不同作用域下同名变量不会有冲突。 - 特点:作用域是分层的,内层作用域可以访问外层作用域的变量,反之则不行。
ES6 之前 JavaScript 没有块级作用域,只有全局作用域和函数作用域。ES6的到来,为我们提供了‘块级作用域’,可通过新增命令let和const来体现。
全局作用域
- 解释:
在代码中任何地方都能访问到的对象拥有全局作用域。 - 常见:
- 1)最外层函数 和在最外层函数外面定义的变量拥有全局作用域
- 2)所有末定义直接赋值的变量自动声明为拥有全局作用域
- 3)所有window对象的属性拥有全局作用域
函数作用域
- 解释:
函数作用域,是指声明在函数内部的变量,和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部。
块级作用域
- 解释:块级作用域可通过新增命令let和const声明,所声明的变量在指定块的作用域外无法被访问。
- 创建:
- 1)在一个函数内部
- 2)在一个代码块(由一对花括号包裹)内部
- 特点:
- 1)声明变量不会提升到代码块顶部,let/const 声明并不会被提升到当前代码块的顶部
- 2)禁止重复声明
- 3)循环中可绑定块作用域
🌟 作用域链
自由变量
当前作用域没有定义的变量