let声明块级作用域变量,不提升、不可重复声明、可重新赋值;适用于if/for等{}内,避免闭包陷阱和全局污染,与const同为块级绑定但允许赋值,与var的函数作用域和变量提升特性明显不同。

let 用于声明只在当前代码块(如 {} 内)有效的变量,避免了 var 的变量提升和函数作用域带来的意外行为。
基本用法:替代 var 声明局部变量
在 if、for、while 或任意花括号包裹的代码块中,用 let 声明的变量不会泄露到外部作用域:
-
let count = 0;—— 声明后可修改,但不能重复声明同名变量 - 不支持变量提升:在声明前访问会报
ReferenceError,而不是undefined - 例如:
console.log(x); let x = 1;会直接报错,无法“先用后声明”
常见场景:循环中避免闭包陷阱
使用 var 的传统 for 循环中,回调里常取到最后一轮的值;let 能为每次迭代创建独立绑定:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
for (let i = 0; i console.log(i), 100); }输出0, 1, 2 - 而
var i会输出三个3,因为所有回调共享同一个i
注意与 const 和 var 的区别
let 是可重新赋值的块级绑定,和 const 一样不被提升、不可重复声明,但允许后续赋值;var 是函数作用域、支持提升、允许重复声明:
-
let a = 1; a = 2;✅ 合法 -
const b = 1; b = 2;❌ 报错(类型错误) -
var c = 1; var c = 2;✅ 合法(但不推荐)
适用范围:仅限块级作用域,不适用于声明全局属性
在浏览器中,let 声明的全局变量不会成为 window 对象的属性:
-
let globalVar = 'hello'; console.log(window.globalVar);→undefined -
var globalVar = 'hello'; console.log(window.globalVar);→'hello' - 这是更安全的默认行为,避免污染全局对象
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










