面试题库 词条目录
前端Wiki/词条/var let const

var let const

定义JavaScript 三种变量声明方式的区别,涉及作用域、提升与重复声明等核心考点

三者区别可以从四个维度看:作用域上 var 是函数作用域,let 与 const 是块级作用域;提升上 var 会提升并初始化为 undefined,let 与 const 也有提升但处于暂时性死区,提前访问直接报错;重复声明上 var 允许,let 与 const 不允许;const 声明的基本类型不可重新赋值,但对象类型的属性仍可修改。

面试常配代码题考察输出顺序:涉及 var 提升与 let 暂时性死区、for 循环中 var 与 let 的差别(let 每轮迭代是一个新作用域,经典题是 for 加 setTimeout 打印)。答题策略是先把四条区别列清楚,再用一段代码印证,最后给出工程建议:默认用 const、可变才 let、避免 var。

JavaScript
// var:所有迭代共享一个 i(函数作用域)
for (var i = 0; i < 3; i++) {
  setTimeout(function () { console.log('var:', i); }, 0);   // 3 3 3
}
// let:每轮迭代都是一个全新的块级作用域
for (let j = 0; j < 3; j++) {
  setTimeout(function () { console.log('let:', j); }, 0);   // 0 1 2
}
// 暂时性死区:声明之前访问直接报错
try {
  console.log(tdZ);        // ReferenceError
} catch (e) {
  console.log(e.name, '暂时性死区');
}
let tdZ = 1;
⚠ 常见误区
🔗 相关词条ES6+ 重点语法数据类型与类型判断
← 返回来源章节ES6+ 重点语法