核心是用对声明方式、管住作用域、借助工具检查:优先用let/const替代var,利用块级作用域隔离变量,启用严格模式和ESLint等工具自动拦截重复声明、隐式全局等问题。

核心是用对声明方式、管住作用域、借助工具检查。var 容易污染,let/const 配合块级作用域才是现代解法。
用 let 和 const 替代 var
var 会变量提升、没有真正块级作用域,容易导致循环变量泄漏、条件块内变量意外暴露。let 和 const 不提升、有严格块级作用域,声明前访问会报错(暂时性死区),天然防误用。
- 函数或 if/for 块内统一用 let 声明临时变量,比如 let i = 0 而不是 var i = 0
- 值不改变的用 const,比如配置项、DOM 元素引用:const btn = document.getElementById('submit')
- 避免在同一个块里重复写 let x 或 const x,语法直接报错,这是保护机制,不是缺陷
主动利用块级作用域隔离临时变量
不需要额外函数封装,一对花括号 {} 就能创建独立作用域,同名变量可安全复用。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 在 if、for、try/catch 内部直接用 let data 或 const url,不同分支互不影响
- 想临时算个中间值?加个空块:{ const temp = a * b; doSomething(temp); }
- 避免把变量声明扔到函数顶层堆着,按需放在最靠近使用位置的块里
杜绝隐式全局变量
不加关键字直接赋值(如 x = 1)在非严格模式下会悄悄挂到全局,这是污染主因之一。
- 所有脚本顶部加 "use strict",此时未声明就赋值直接抛 ReferenceError
- 禁用无关键字赋值:ESLint 开启 no-implicit-globals 和 no-unused-vars 规则
- 模块化项目默认启用严格模式,CommonJS 或 ES 模块本身就有作用域隔离效果
靠工具提前拦截问题
肉眼难发现嵌套深、文件多时的重复或越界声明,自动化检查必不可少。
- VS Code 中装 ESLint 插件,启用 no-redeclare(检测重复声明)、no-var(劝退 var)
- CI 流程中跑 eslint --ext .js,.ts src/,失败即阻断合并
- TypeScript 支持即使写 JS 文件也能标红重复声明和作用域错误,零成本增益
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










