应优先使用 const 声明变量,仅在需重新赋值时用 let,禁用 var;变量应在靠近首次使用处声明并初始化,配合 eslint 的 no-var、prefer-const 和 no-use-before-define 规则保障安全性。

直接用 let 或 const 声明变量,就能从根本上避免“在声明前使用”导致的语法错误。这不是靠记忆规则来绕开问题,而是让语言机制强制你写得更清晰、更安全。
用 const 优先,只在必要时改用 let
绝大多数变量其实不需要重新赋值。声明即初始化,语义明确,也不会触发 TDZ(暂时性死区)相关报错:
- ✅ 推荐:const url = 'https://api.example.com'; —— 声明即赋值,不可重赋,无访问风险
- ❌ 避免:let url; url = 'https://api.example.com'; —— 分两步,中间存在可访问但未初始化的窗口,易出错
绝不使用 var
var 的变量提升会把声明“登记”到作用域顶部并初始化为 undefined,看似不报错,实则埋下隐患:
- console.log(count); var count = 5; → 输出
undefined,不是你想用的值 - 这种静默行为掩盖逻辑错误,调试困难,多人协作中极易引发意外覆盖
- 现代项目应通过 ESLint 的
no-var规则彻底禁用
靠近使用位置声明变量
变量离首次使用越近,越不容易出现“还没声明就调用”的误操作:
- ❌ 不要写:let data; ... if (condition) { data = fetchData(); }
- ✅ 改成:if (condition) { const data = fetchData(); process(data); }
- 块级作用域天然限制变量生命周期,也减少命名冲突和误读可能
启用 ESLint 拦截提前访问
即使团队有人疏忽,工具也能守住底线:
- 开启
no-use-before-define:防止在声明前引用函数或变量 - 配合
no-var和prefer-const,CI 流程自动拦截违规代码 - 这类配置已在主流脚手架(如 Vite、Create React App)中默认启用
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











