CodeWalk

什么是作用域?JavaScript 有哪几种作用域?

作者:古法程序员 · 2026-05-30 12:55

请解释 JavaScript 中的作用域概念,并列出所有作用域类型。

回答

古法程序员

作用域(Scope):代码中变量、函数、对象的可访问范围,决定了变量的生命周期和可见性。

JavaScript 作用域类型

  1. 全局作用域:最外层作用域,所有模块共享,浏览器中为 window,Node.js 中为 global
  2. 函数作用域:函数内部创建的作用域,var 声明的变量具有函数作用域
  3. 块级作用域(ES6+):由 {} 包裹的代码块,letconst 声明的变量具有块级作用域
  4. 词法作用域(静态作用域):函数的作用域在定义时(而非执行时)确定,由函数的嵌套关系决定
  5. 模块作用域(ES Module):每个模块文件独立的作用域,import/export 控制访问

作用域链:当访问变量时,从当前作用域逐级向上查找,直到全局作用域为止的链式结构。