统一变量声明风格旨在降低理解成本、规避作用域陷阱、提升协作效率,核心是明确使用方式、声明位置与命名规范:仅用let/const、块顶集中声明、语义化命名、声明即初始化。

统一变量声明风格不是为了“看起来整齐”,而是为了减少理解成本、避免作用域陷阱、提升协作效率。核心在于明确“谁该用什么、在哪声明、怎么命名”。
声明方式:只用 let 和 const,禁用 var
var 存在函数作用域和变量提升问题,容易引发意料外的行为(比如 if 块内声明却在块外可访问)。团队应强制使用 ES6+ 的 let 和 const:
- const 优先:只要变量不重新赋值(包括不改变引用指向),就用 const。例如 API 地址、配置对象、事件处理器函数等
- let 仅用于需重赋值的场景:如循环计数器、状态暂存、累加变量等
-
禁止 var:通过 ESLint 规则
'no-var': 'error'拦截,配合 Husky + lint-staged 在提交前自动检查
声明位置:块级作用域顶部集中声明
不要边用边声明,尤其避免在条件分支或循环内部突然出现新变量。这会让逻辑流变难追踪。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 每个
{}块(函数、if、for、try 等)开头集中声明本块所需变量 - 同一作用域内,不允许多个
let/const语句分散声明相同类型变量 - 避免“声明后隔十几行才首次使用”,保持声明与使用距离紧凑
命名规则:语义化 + 类型提示 + 一致性
名字不是标签,是意图的直接表达。团队需约定并执行以下惯例:
-
普通变量:小驼峰(
userName、isLoading) -
布尔值:必须以
is、has、can开头(isMounted、hasPermission) -
常量:全大写 + 下划线(
MAX_RETRY_COUNT、DEFAULT_TIMEOUT) -
禁止模糊命名:如
data、temp、res、拼音或缩写(除非是广泛接受的,如btn、api)
初始化与类型意识
声明即初始化,既是习惯,也是防御性编程:
-
const必须带初始值;let也建议初始化(哪怕为null或undefined),避免ReferenceError或undefined引发的隐式转换错误 - 空对象用
{},空数组用[],不写new Object()或new Array() - 对可能为 null/undefined 的变量,提前做类型判断或提供默认值(
??或||要谨慎,优先用可选链?.)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










