> For the complete documentation index, see [llms.txt](https://anjia1.gitbook.io/web/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anjia1.gitbook.io/web/js/runtime/scope.md).

# 作用域

作用域是当前执行的上下文，在那里的值和表达式都是可见的或是可以引用的。如果一个变量或者表达式不在当前的作用域内，那它是不能被使用的。作用域也是有层级的，子作用域是可以访问父作用域的，反之则不行。

JavaScript 有以下几种作用域：

1. 全局作用域：在脚本模式下运行的所有代码的默认作用域
2. 模块作用域：在模块模式下运行的代码的作用域
3. 函数作用域：用函数创建的作用域。函数会创建一个单独的作用域，比如以便在函数内专门定义的变量不能在函数外部访问
4. 块级作用域：用一对花括号 `{}` 创建的作用域。比如用 `let` 和 `const` 声明的变量就属于块级作用域的

<https://developer.mozilla.org/en-US/docs/Glossary/Scope>

作用域。对变量起限定作用的程序段落被称为域 scope。事实上，JavaScript 中变量的真正意义上的作用域是运行时的调用栈，而不是静态的语法树。
