const声明块级只读绑定,必须初始化且不可重复声明;基础类型值不可变,引用类型可修改内容但不能重新赋值;具有块级作用域和暂时性死区,推荐优先使用。

const 用于声明块级作用域的只读绑定,声明后不能重新赋值,也不能重复声明。
基本用法:声明即初始化
const 必须在声明时赋值,否则报错:
❌ 错误写法:const PI;
PI = 3.14159; // SyntaxError: Missing initializer in const declaration
const PI = 3.14159;
const USER_ROLE = "admin";
立即学习“Java免费学习笔记(深入)”;
不可重新赋值,但对象/数组内容可变
const 阻止的是“绑定被重新指向”,不是“值不可变”:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 基础类型(string、number、boolean 等):值不可变,自然安全
- 引用类型(object、array、function):变量仍指向原内存地址,可修改其属性或元素
例如:
const arr = [1, 2];
arr.push(3); // ✅ 允许,arr 变为 [1, 2, 3]
arr = [4, 5]; // ❌ 报错:Assignment to constant variable
作用域与提升行为
const 声明具有块级作用域(如 if、for、函数内),且存在“暂时性死区(TDZ)”:
- 不能在声明前访问(哪怕用 typeof 也会报错)
- 不会被变量提升(不同于 var),也不会像 let 那样仅初始化提升
例如:
console.log(x); // ReferenceError
const x = 10;
常见使用建议
- 优先用 const,除非明确需要后续重新赋值(此时改用 let)
- 命名常量推荐全大写加下划线(如 MAX_RETRY_COUNT),但非强制
- 避免用 const 声明会被意外修改的对象,必要时可用 Object.freeze() 冻结浅层结构
- 模块顶层常用 const 导出配置、工具函数等(配合 export)

















