优先使用 const,需重新赋值时用 let,var 基本弃用;const 保证基础类型不可重赋值、引用类型不可重指向,let 具备块级作用域且适用于动态变化的变量。

直接说结论:优先用 const,需要重新赋值时改用 let,var 基本不用。
const 适合声明不打算修改的值
绝大多数变量其实并不需要后续改写——比如 API 地址、配置项、DOM 元素引用、函数返回的固定对象等。用 const 不仅语义清晰,还能防止意外赋值,提升代码可读性和安全性。
- 基础类型(字符串、数字、布尔)声明后不能重新赋值
- 引用类型(对象、数组、函数)声明后不能指向新地址,但可以修改其内部属性或元素
- 哪怕只是临时存一个 DOM 节点:
const btn = document.getElementById('submit');—— 后续不会让btn指向别的元素,就该用const
let 用于需要多次赋值的变量
当变量值会在运行中动态变化,比如循环计数器、状态标记、中间计算结果,就用 let。
- 有块级作用域:在
if、for、while的{}内声明,外部访问不到 - 避免了
var的闭包陷阱,比如for (let i = 0; i 中每个迭代都有独立的 <code>i - 不能重复声明,也不允许在声明前访问(暂时性死区),比
var更严谨
var 已淘汰,仅需知道它为什么不用
var 是 ES5 及更早时代的产物,现在只在阅读老代码或某些特殊兼容场景中见到。它的设计缺陷明显:
- 函数作用域而非块级作用域,容易造成变量泄露(比如
if里声明的var x,外面还能访问) - 变量提升导致声明前访问得
undefined,行为反直觉 - 允许重复声明,掩盖逻辑错误
- 在全局作用域下会自动挂载到
window(浏览器环境),增加污染风险
一句话判断技巧
写完声明,问自己:这个变量后续会不会被 = 赋新值?
- 不会 → 用
const - 会 → 用
let - 想用
var→ 再想想,真的需要吗?
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











