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

在全局作用域使用 let 声明一个变量后,能否通过 window 对象访问到该变量?

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

考察说明

考查对 let 声明变量与全局对象(window)之间关系的理解。

回答思路

  1. 【回答框架 1】使用 let 在全局作用域声明的变量,不会成为 window 对象的属性,因此无法通过 window 对象访问。
  2. 【回答框架 2】与 var 声明的全局变量不同,var 声明的变量会成为全局对象(浏览器中为 window)的属性。
  3. 【回答框架 3】let 声明的全局变量仍具有全局作用域,但其存储位置独立于全局对象,避免污染全局对象。
  4. 【回答框架 4】在全局作用域使用 let 声明时,变量的作用域类似于块级作用域的顶层,但可通过全局词法环境访问。
  5. 【回答框架 5】访问此类变量时,可直接使用变量名,但不能通过 window 对象属性访问。
  6. 【关键点 1】let 声明的全局变量不属于 window 对象属性,不能通过 window 访问。
  7. 【关键点 2】var 声明的全局变量是 window 对象的属性,可通过 window 访问。
  8. 【关键点 3】let 提供了块级作用域,全局作用域中的 let 变量存储在词法环境中,而非全局对象。
  9. 【关键点 4】全局 let 变量可以在整个脚本中通过变量名直接访问,但不能挂载到 window 上。
  10. 【关键点 5】使用 typeof window.变量名 会返回 undefined,而直接使用变量名可正常获取值。
  11. 【易错点 1】误以为所有全局声明的变量都会成为 window 属性,实际只有 var 和未声明直接赋值才会。
  12. 【易错点 2】在调试时,如果通过 window 访问 let 全局变量会得到 undefined,容易误判变量未定义。
  13. 【易错点 3】在严格模式下,未声明变量赋值会报错,但 let 声明不影响其全局特性。