前端嘛 Logo
前端嘛

作用域

作用域是当前的执行上下文,它规定了变量的可访问范围。在程序执行时,JS 引擎会根据变量声明的位置来确定其作用域。

分类

ES6 之前只有全局作用域和函数作用域,ES6 增加了块级作用域

全局作用域

  1. 在代码中任何地方都能访问到的变量称为全局变量,拥有全局作用域

  2. 所有未定义直接赋值的变量自动声明全局变量

  3. 全局变量会成为全局对象的属性

函数作用域

在函数内部定义的变量只能在函数内部访问,拥有函数作用域

块级作用域

  1. ES6 新增了块级作用域,由 let 和 const 定义的变量只能在块级作用域中被访问

  2. 存在“暂时性死区”,即在代码块中,在使用 let 和 const 声明变量之前,变量不可用

作用域链

  1. 作用域之间可以存在嵌套的关系,作用域链是由嵌套作用域组成的链式结构

  2. 在访问变量时,JS 引擎会沿着作用域链由内向外搜索变量,直到找到或向上追溯到全局作用域为止