优先使用 const,需重新赋值时用 let,基本不用 var;const 表示绑定不可变且必须初始化,let 具有块作用域和暂时性死区,var 因变量提升和函数作用域易引发 bug 应避免。

优先用 const,需要重新赋值时改用 let,基本不用 var。
const 适用于大多数场景
只要变量声明后不会重新赋值,就该用 const。它明确表达“这个值不打算变”,提升可读性和安全性。
- 函数参数、配置对象、API URL、数学常量(如
PI)都适合用 const -
必须初始化:声明时就得给值,否则报错
Missing initializer in const declaration - 注意:const 不等于“内容不可变”,而是“绑定不可变”。对象或数组本身仍可修改属性或元素
let 用于需要修改的局部变量
当变量值会在后续代码中被更新(比如循环计数器、临时计算结果、条件分支中的不同取值),就用 let。
- 作用域严格限制在块内(
{}),避免意外泄露,比如for循环中每个迭代都有独立绑定 - 不存在变量提升带来的
undefined风险,但有暂时性死区(TDZ):声明前访问会直接报错 - 同一作用域内不能重复声明,包括不能和
var或const同名
var 基本应避免使用
它的函数作用域和变量提升行为容易引发隐蔽 bug,现代项目中已无必要保留。
- 在
if或for块里声明,却能在块外访问——违反直觉,易导致命名冲突 - 声明提升 + 初始化不提升,造成“能读但值是
undefined”的模糊状态 - 允许重复声明,掩盖逻辑错误,降低代码健壮性
一个直观的判断流程
写变量声明前,快速问自己三个问题:
- 这个值从声明起就固定不变?→ 选 const
- 需要中途修改,但只在当前块(如
if、for、函数体)里用?→ 选 let - 是否需要在函数外访问、或依赖提升行为?→ 不需要,别用 var
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











