const 声明
最后更新:2026-09-09
const 声明
const 用来声明一个块级作用域的常量:声明时必须立刻赋值,之后不能再把这个名字指向别的值。注意它锁定的是“变量名和值的绑定关系”,而不是值本身——用 const 声明的对象或数组,里面的属性和元素照样可以修改。
| 分类 | 变量声明 |
|---|---|
| 作用域 | 块级作用域({} 内) |
| 变量提升 | 有提升,但存在暂时性死区 |
| 重复声明 | 同一作用域不允许 |
| 重新赋值 | 不允许(但对象/数组内容可修改) |
| ES 版本 | ES6(2015) |
📝 语法
const 常量名 = 值;
⚙️ 参数
| 常量名 | 习惯上用全大写加下划线,如 MAX_SIZE;这只是约定,语法上并不强制。 |
|---|---|
| 值 | 必填。声明时就必须给出初始值,不能先声明后赋值。 |
返回值:不返回值,const 是一条声明语句。
是否修改原值:否(返回新值)
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
3.14
重新赋值报错:TypeError
李四
⚠️ 警告 const 保证的是变量名不能被重新赋值,不是值不可变。想让对象真正冻结,需要 Object.freeze(obj)(只冻结一层)。
💡 提示 默认用 const,只有确定后面要重新赋值时才改用 let——这条习惯能让读代码的人一眼看出哪些值不会变。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| const | ✓ v49 | ✓ v12 | ✓ v36 | ✓ v10 | ✓ v36 |
| 所有现代浏览器均支持 | |||||
🏷️ 相关语句
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qconst 声明的对象为什么还能改属性?
A因为 const 锁住的是变量和值之间的绑定关系,也就是“这个变量名永远指向这块内存”。对象本身的内容并不受这层约束,所以增删改属性都合法。只有试图让变量指向另一个对象(user = {})才会报 TypeError。
Qconst 声明时可以留空不赋值吗?
A不行。语法层面就禁止:const x; 会直接抛出 SyntaxError: Missing initializer in const declaration。这也是 const 与 let 最直观的区别之一。
Q什么时候该用 const,什么时候用 let?
A只要这个变量名之后不会被重新赋值,就用 const:常量、配置项、函数表达式、导入的模块、DOM 引用大都属于这一类。只有在循环计数器、需要逐步累加的结果这类场景才用 let。var 在新项目里基本不需要了。