JavaScript Const的基础使用

JavaScript 中的 const 关键字

const 是 JavaScript 中用于声明常量的关键字,其核心特性是:

  1. 不可重新赋值

    声明后变量的引用不可更改:

    javascript 复制代码
    const PI = 3.14;
    PI = 3.14159; // 报错:Assignment to constant variable
  2. 块级作用域

    let 类似,仅在当前代码块内有效:

    javascript 复制代码
    {
      const message = "Hello";
      console.log(message); // 输出 "Hello"
    }
    console.log(message); // 报错:message is not defined
  3. 必须初始化

    声明时必须赋值,否则报错:

    javascript 复制代码
    const name; // 报错:Missing initializer in const declaration

关键注意事项

  • 对象和数组的可变性
    const 仅阻止变量被重新赋值,但对象或数组的内容可修改:

    javascript 复制代码
    const user = { name: "Alice" };
    user.name = "Bob"; // 允许修改属性
    user = { name: "Charlie" }; // 报错:重新赋值被禁止
    
    const nums = [1, 2, 3];
    nums.push(4); // 允许修改数组
  • varlet 的区别

    特性 const let var
    重新赋值 ❌ 禁止 ✅ 允许 ✅ 允许
    作用域 块级作用域 块级作用域 函数作用域
    变量提升 不提升 不提升 ✅ 提升(初始化为 undefined
    重复声明 ❌ 禁止 ❌ 禁止 ✅ 允许(覆盖)

最佳实践

  1. 默认使用 const
    优先用 const 声明变量,仅在需要重新赋值时改用 let,避免使用 var

  2. 命名规范
    常量通常使用全大写 + 下划线命名(如 MAX_SIZE),提高可读性。

  3. 冻结对象
    若需完全不可变对象,可使用 Object.freeze()

    javascript 复制代码
    const config = Object.freeze({ key: "secret" });
    config.key = "new"; // 静默失败(严格模式下报错)

通过合理使用 const,可提升代码稳定性和可维护性,减少意外赋值导致的错误。

在 JavaScript 中,const 是用于声明常量的关键字,具有以下特点和行为:

声明与初始化

const 声明的变量必须在声明时立即初始化,且不能重新赋值。例如:

javascript 复制代码
const PI = 3.14159; // 正确
const MAX_SIZE;     // 错误:未初始化

块级作用域

constlet 类似,具有块级作用域(仅限于 {} 内):

javascript 复制代码
if (true) {
  const x = 10;
  console.log(x); // 输出 10
}
console.log(x);   // 报错:x 未定义

对象和数组的可变性

对于引用类型(如对象或数组),const 仅保证变量引用的地址不变,但内容可以修改:

javascript 复制代码
const person = { name: "Alice" };
person.name = "Bob"; // 允许修改属性
person = {};         // 报错:重新赋值

const nums = [1, 2, 3];
nums.push(4);        // 允许修改数组
nums = [5, 6];       // 报错:重新赋值

暂时性死区

let 类似,const 存在暂时性死区(TDZ),声明前访问会报错:

javascript 复制代码
console.log(x); // 报错:Cannot access 'x' before initialization
const x = 10;

命名规范

通常使用全大写字母和下划线命名常量(如 MAX_SIZE),但非强制要求。

使用场景

  • 需要保护变量不被重新赋值时(如配置项、数学常量)。
  • 引用类型需要保持引用稳定但内容可变时。