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

在 JavaScript 中,let、const 和 var 在声明变量时有哪些主要区别?请从作用域、变量提升、重复声明和赋值限制等方面进行说明。

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

考察说明

考查对 JavaScript 变量声明方式的核心差异理解。

回答思路

  1. 【回答框架 1】var 是函数作用域,let 和 const 是块级作用域,即在一对大括号内有效。var 在函数外声明为全局作用域,而 let 和 const 在块外不可访问。
  2. 【回答框架 2】var 存在变量提升,声明会被提升到作用域顶部并初始化为 undefined,而 let 和 const 也会提升但处于暂时性死区,在声明前访问会报 ReferenceError。
  3. 【回答框架 3】var 允许重复声明同一变量,let 和 const 在同一作用域内不允许重复声明,否则会报 SyntaxError。
  4. 【回答框架 4】const 声明时必须初始化,且其绑定不可重新赋值,但若绑定的是对象,则对象内部的属性仍可修改;let 可重新赋值,var 也可重新赋值。
  5. 【回答框架 5】在全局作用域中,var 声明的变量会成为 window 对象的属性,而 let 和 const 不会。
  6. 【关键点 1】var 函数作用域,let/const 块级作用域
  7. 【关键点 2】var 有提升且初始为 undefined,let/const 有暂时性死区
  8. 【关键点 3】let/const 不允许重复声明,var 允许
  9. 【关键点 4】const 绑定不可变,但对象属性可变
  10. 【关键点 5】全局 var 挂到 window,let/const 不挂
  11. 【易错点 1】注意 const 对象属性可变,容易误解为冻结
  12. 【易错点 2】暂时性死区容易忽略,导致声明前使用报错
  13. 【易错点 3】块级作用域在循环中使用 var 会产生闭包共享问题,需要 let 或 IIFE 解决