let/const 在 if 等语句的 {} 内声明具有块级作用域,外部无法访问;var 会变量提升并泄漏到外层;应优先使用 const,就近声明,避免跨块访问。

在 JavaScript 中,条件语句(如 if、for、while)内部可以直接用 let 或 const 声明块级作用域变量,它们的作用域仅限于该语句的花括号 {} 内。
用 let/const 在 if 语句中声明变量
let 和 const 天然具有块级作用域特性。只要写在 {} 里,外部就无法访问。
例如:
if (true) {
let x = 10;
const y = 'hello';
console.log(x, y); // ✅ 正常输出:10 "hello"
}
console.log(x); // ❌ ReferenceError: x is not defined
console.log(y); // ❌ ReferenceError: y is not defined
避免用 var —— 它没有块级作用域
var 声明会提升到函数或全局作用域顶部,不受 {} 限制。
立即学习“Java免费学习笔记(深入)”;
比如:
if (true) {
var z = 20;
}
console.log(z); // ✅ 输出 20 —— 实际上已泄漏到外层作用域
所以,若想真正实现“条件内私有变量”,不要用 var。
注意:声明必须在块内,且不能跨块访问
- 每个
{}是独立块,即使嵌套,内层声明对外层不可见 - 同名变量可在不同块中重复声明,互不影响
-
const必须初始化,且不能重新赋值;let可后续赋值,但不能重复声明
实际使用建议
- 优先用
const,只在需要重新赋值时改用let - 把逻辑相关的变量就近声明在它被使用的块内,提高可读性和安全性
- 不要依赖块外访问条件内的变量——这是设计意图,不是限制


















