前端嘛 Logo
前端嘛

作用域

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

分类

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

全局作用域

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

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

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

函数作用域

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

块级作用域

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

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

作用域链

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

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