const仅防止变量重新赋值,基本类型天然不可变;对象/数组需object.freeze()浅冻结,深层冻结需递归或第三方库;命名规范、严格模式、eslint和typescript可强化防护。

const 本身不能完全防止“被修改”,它只防止变量被重新赋值。真正要防意外修改,得结合类型特性和额外手段来分情况处理。
基本类型天然防改
数字、字符串、布尔值这些基本类型用 const 声明后,值确实改不了:
- const PI = 3.14159; —— 再写 PI = 3.14 会直接报错
- 这是因为基本类型值就存在变量绑定里,const 锁住的就是这个值本身
对象和数组要手动冻结
const 对对象、数组只锁住“指向哪儿”,不锁“里面有什么”。所以:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- const user = { name: 'Alice' }; —— user.name = 'Bob' 是允许的
- const list = [1, 2]; —— list.push(3) 也能成功
- 想真正禁止改动,得用 Object.freeze():
const config = Object.freeze({ api: 'https://x.com' }); - 注意:freeze 是浅冻结,嵌套对象仍可改;深层冻结需递归或用第三方库
命名与习惯强化防护
技术限制之外,靠规范减少人为失误:
- 常量名全大写加下划线,比如 MAX_RETRY_COUNT,一眼识别不可动
- 声明即初始化,不拖到后面再赋值 —— const 不允许延迟初始化
- 配置类对象优先用 freeze,DOM 引用类(如 const btn = document.getElementById('x'))用 const 就够了,因为不需要改内容
配合严格模式和工具链
光靠运行时不够,提前拦截更有效:
- 开启 "use strict",让某些静默失败变成报错(比如对 freeze 对象赋值)
- 用 ESLint 规则(如 no-const-assign、prefer-const)在编辑阶段提示风险
- TypeScript 中配合 readonly 或 as const 可进一步收紧类型约束
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










