现代javascript默认用let声明块级可变变量、const声明不可重赋值常量,var已淘汰;let具有块级作用域、暂时性死区和无变量提升特性,const要求初始化且绑定不可变,优先使用const。

直接用 let 声明可变的块级变量,用 const 声明不打算重新赋值的常量——这是现代 JavaScript 变量声明的默认规范,var 已淘汰。
let:声明只在当前块内有效的变量
只要代码被一对花括号 {} 包裹(比如 if、for、单独的 {}),里面用 let 声明的变量就出不去。
- if 语句里声明,外面访问会报
ReferenceError - for 循环中每次迭代都生成独立的 let 变量,避免了传统 var 的闭包陷阱
- 不能在声明前使用(存在“暂时性死区”),比如先
console.log(x)再let x = 1会直接报错 - 同一作用域下重复声明同名 let 变量,语法错误
const:声明初始化后不可重新赋值的常量
const 不代表“值完全不可变”,而是“绑定不可变”——它保证变量始终指向同一个内存地址。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 声明时必须立即赋值,不能留空或用
null占位 - 基础类型(string/number/boolean)赋值后,确实不能再改
- 引用类型(对象、数组)可以修改其内部属性或元素,比如
obj.name = 'new'或arr.push(4)都合法 - 但不能做
obj = {}或arr = []这类整体替换操作
什么时候该用 let,什么时候该用 const
优先选 const。只有明确知道后续需要重新赋值时,才换用 let。
- 函数参数、循环计数器(如
for (let i = 0; ...))、临时计算结果 → 多数情况仍可用 const,除非真要改值 - 配置项、API 地址、数学常量(如
const API_URL = '/api')→ 必须 const - 状态变量(如
let isLoading = true后续要设为 false)→ 用 let - 避免用 let 声明从不修改的变量,这会削弱代码可读性和运行时保障
常见误区提醒
别把 const 当成“只读对象”,也别以为 let 在嵌套块里会覆盖外层同名变量——它只是新建一个同名局部变量。
-
var的全局挂载(如在顶层写var a = 1会变成window.a)和变量提升行为,在 let/const 中都不存在 - 顶层作用域中用 let/const 声明,不会成为全局对象的属性,更安全
- 块级作用域不是靠缩进或语义判断,而是严格由
{}定义,哪怕只是{ let x = 1; }这样一行独立块
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










