实用百科指南
霓虹主题四 · 更硬核的阅读氛围

变量const用法详解:让代码更安全的常量定义方式

发布时间:2025-12-15 10:11:32 阅读:247 次

在写程序时,经常会遇到一些值我们不希望它被修改,比如圆周率 π、配置项、API 地址等。这时候,const 就派上用场了。它用来声明一个“常量”,也就是一旦赋值就不能再改的变量

const 基本语法

使用 const 很简单,只需要在声明变量时加上这个关键字:

const PI = 3.14159;
const API_URL = "https://api.example.com";

这样定义之后,如果尝试重新赋值,JavaScript 会直接报错:

const MAX_USERS = 100;
MAX_USERS = 150; // 报错:Assignment to constant variable.

必须初始化

letvar 不一样,const 声明的变量必须在声明时就赋值,不能留空。

const username; // 报错:Missing initializer in const declaration

这也很合理,毕竟“常量”意味着从诞生起就得有个确定的值。

适用于对象和数组吗?

很多人以为 const 能让对象或数组完全不可变,其实不是。它只是保证变量指向的地址不变,但对象内部的属性或数组元素还是可以改的。

const user = { name: "张三", age: 25 };
user.age = 26; // 合法,可以修改属性
user.email = "zhangsan@example.com"; // 也可以添加新属性

const numbers = [1, 2, 3];
numbers.push(4); // 合法,数组内容可以变

如果你真想让对象完全不可变,得配合 Object.freeze() 使用:

const frozenUser = Object.freeze({ name: "李四", role: "admin" });
frozenUser.role = "user"; // 在严格模式下会报错,否则静默失败

块级作用域特性

constlet 一样,都是块级作用域。这意味着在 if、for、{} 里面声明的 const 变量,外面是访问不到的。

if (true) {
  const message = "只能在这里用";
  console.log(message); // 正常输出
}
console.log(message); // 报错:message is not defined

实际应用场景

在项目开发中,用 const 定义配置项特别常见。比如你写一个天气应用,城市列表和单位设置通常不会变:

const DEFAULT_CITY = "北京";
const TEMPERATURE_UNIT = "C"; // 摄氏度
const SUPPORTED_CITIES = ["北京", "上海", "广州", "深圳"];

这样别人看代码时一眼就知道这些值不该被改动,也避免了不小心被覆盖的问题。

和 let、var 的选择建议

现在主流开发中,推荐优先使用 const,除非你明确知道这个变量后续需要重新赋值,才改用 letvar 基本已经退出历史舞台了。

比如你在循环处理数据,计数器自然用 let

let count = 0;
for (let i = 0; i < items.length; i++) {
  if (items[i].valid) count++;
}

而像 DOM 元素引用这种只获取一次的,就该用 const

const submitBtn = document.getElementById("submit-btn");