优先使用 const,仅当需整体重新赋值时用 let,禁用 var;const 适用于不重赋引用的场景,let 表示“换盒子”,var 因作用域和提升问题存在安全隐患。

日常开发中,优先用 const,需要重新赋值时才换 let。这不是教条,而是基于作用域安全、可读性和维护性的综合判断。
const 是默认选项,不是“只给常量用”
很多人误以为 const 只适合写 PI = 3.14 这类数学常量,其实不然。只要变量声明后**不打算重新赋值整个引用**,就该用 const。
- 函数返回值:如
const data = fetchData()—— 后续只读取或修改 data 内部属性,不写data = newData - DOM 元素:如
const btn = document.querySelector('#submit')—— 按钮对象本身不会换,但可以调用btn.addEventListener或改btn.disabled - 配置对象:如
const config = { timeout: 5000, retry: 3 }—— 后续可能改config.timeout = 8000,但不会写config = {...}
let 用在明确要“换盒子”的地方
let 的核心信号是:这个变量后续会指向一个全新的值,不只是改里面的内容。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 循环计数器:
for (let i = 0; i —— i 的值不断被覆盖 - 状态暂存:如
let currentUser = null,之后在登录后赋值为用户对象,登出又设为null - 条件分支赋值:
let result; if (x > 0) result = 'positive'; else result = 'negative';
别用 var,不是“过时”,而是“危险”
var 的函数作用域和变量提升容易引发隐蔽问题,比如循环中异步回调捕获错误的 i 值、块级逻辑意外泄漏变量。
- 它允许重复声明,容易掩盖拼写错误
- 在 if 块里用 var 声明,变量实际在函数顶部就存在,造成逻辑错觉
- 现代工具链(ESLint、TypeScript)默认禁用 var,团队协作中也难通过 Code Review
遇到不确定时,试试“赋值测试法”
写完声明后,问自己一句:这行之后,我有没有可能写 变量名 = ...?
- 如果答案是“没有”,就用 const
- 如果答案是“有”,且不是对象/数组内部修改(比如 push、属性赋值),而是整体替换,就用 let
- 如果发现要频繁重赋值 + 多层嵌套逻辑,可能说明变量职责太重,值得拆成更小的 const
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










