前端/移动开发面试题更新 2026-08-05

请谈谈你如何理解 JavaScript 中的作用域和作用域链?

前端/移动开发技术原理JavaScript

考察说明

考察对 JavaScript 变量可访问范围及其查找机制的基本理解。

回答思路

  1. 【回答框架 1】作用域定义了变量和函数的可访问范围。JavaScript 采用词法作用域,即函数的作用域在定义时确定,与调用位置无关。传统上分为全局作用域、函数作用域,ES6 引入块级作用域(let 和 const)。
  2. 【回答框架 2】作用域链是变量查找的机制。当访问一个变量时,引擎从当前作用域开始向上逐级查找,直到找到该变量或到达全局作用域。作用域链由当前执行上下文的作用域和其外层作用域组成,本质上是词法环境的链式结构。
  3. 【回答框架 3】闭包与作用域链紧密相关。闭包使得内部函数可以访问外部函数作用域中的变量,即使外部函数已经执行完毕,其作用域对象仍保留在作用域链中。这可能导致内存占用,需注意及时释放引用。
  4. 【关键点 1】JavaScript 作用域是词法作用域,在代码定义时确定。
  5. 【关键点 2】作用域链用于变量查找,从当前作用域向上直至全局。
  6. 【关键点 3】ES6 新增块级作用域,let 和 const 变量受限于所在块。
  7. 【关键点 4】闭包依赖作用域链,可访问外部变量,但可能引起内存驻留。
  8. 【易错点 1】混淆变量提升与作用域,var 提升但 let 和 const 存在暂时性死区。
  9. 【易错点 2】误以为作用域链在运行时动态变化,实际由函数定义位置决定。
  10. 【易错点 3】忽略闭包导致的外部变量无法回收,造成内存泄漏风险。