const 声明

最后更新:2026-09-09

const 声明

const 用来声明一个块级作用域的常量:声明时必须立刻赋值,之后不能再把这个名字指向别的值。注意它锁定的是“变量名和值的绑定关系”,而不是值本身——用 const 声明的对象或数组,里面的属性和元素照样可以修改。

分类变量声明
作用域块级作用域({} 内)
变量提升有提升,但存在暂时性死区
重复声明同一作用域不允许
重新赋值不允许(但对象/数组内容可修改)
ES 版本ES6(2015)

📝 语法

const 常量名 = 值;

⚙️ 参数

常量名习惯上用全大写加下划线,如 MAX_SIZE;这只是约定,语法上并不强制。
必填。声明时就必须给出初始值,不能先声明后赋值。

返回值:不返回值,const 是一条声明语句。

是否修改原值:否(返回新值)

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

3.14
重新赋值报错:TypeError
李四
⚠️ 警告 const 保证的是变量名不能被重新赋值,不是值不可变。想让对象真正冻结,需要 Object.freeze(obj)(只冻结一层)。
💡 提示 默认用 const,只有确定后面要重新赋值时才改用 let——这条习惯能让读代码的人一眼看出哪些值不会变。

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
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 在新项目里基本不需要了。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏