JS 作用域

99 阅读1分钟

一、定义:作用域就是变量、函数和对象的可访问范围。

在ES6以前,js只有一种变量声明关键字var,它定义的变量是在一个函数作用域而不是在最小的代码块中,这造成了很多问题。

ES6(2015)推出了let,const解决var的问题。

二、核心概念:

let, const的作用域在最近的代码块内,叫做块级作用域

var的作用域在最近的函数内,叫做函数作用域

所以说,看到let, const,想到这个代码块。看到var想到这个函数。

三、其他相关概念:

  • 变量提升:将var的声明提升到作用域的顶部。
  • 函数提升:将function的声明和定义提升到作用域的顶部。
  • 作用域链:在当前作用域找不到变量时,会向外层查找,此时会形成闭包。 【作用域链是从内到外的,而外部不能访问内部。】
  • 闭包:函数 + 访问的变量定义的作用域的组合。
  • 立即执行函数:用函数包一层,强行改变为函数作用域。