一、定义:作用域就是变量、函数和对象的可访问范围。
在ES6以前,js只有一种变量声明关键字var,它定义的变量是在一个函数作用域而不是在最小的代码块中,这造成了很多问题。
ES6(2015)推出了let,const解决var的问题。
二、核心概念:
let, const的作用域在最近的代码块内,叫做块级作用域。
var的作用域在最近的函数内,叫做函数作用域。
所以说,看到let, const,想到这个代码块。看到var想到这个函数。
三、其他相关概念:
- 变量提升:将var的
声明提升到作用域的顶部。 - 函数提升:将function的
声明和定义提升到作用域的顶部。 - 作用域链:在当前作用域找不到变量时,会向外层查找,此时会形成闭包。 【作用域链是从内到外的,而外部不能访问内部。】
- 闭包:函数 + 访问的变量定义的作用域的组合。
- 立即执行函数:用函数包一层,强行改变为函数作用域。