js const实现
const 的基本概念
在 JavaScript 中,const 用于声明一个常量,其值在初始化后不可重新赋值。const 声明的变量具有块级作用域,与 let 类似。
const 的特性
-
不可重新赋值:
const声明的变量不能被重新赋值,否则会抛出错误。
const PI = 3.14; PI = 3.14159; // TypeError: Assignment to constant variable. -
块级作用域:
const的作用域限于声明它的代码块内。if (true) { const x = 10; } console.log(x); // ReferenceError: x is not defined -
必须初始化:
const声明时必须赋值,否则会报错。
const y; // SyntaxError: Missing initializer in const declaration
const 与对象和数组
虽然 const 声明的变量不能重新赋值,但其引用的对象或数组的内容可以修改。
const person = { name: "Alice" };
person.name = "Bob"; // 允许修改属性
person = { name: "Charlie" }; // TypeError: Assignment to constant variable
const nums = [1, 2, 3];
nums.push(4); // 允许修改数组
nums = [5, 6]; // TypeError: Assignment to constant variable
const 的使用场景
- 声明不需要重新赋值的变量(如配置常量)。
- 声明引用类型(对象、数组)时,避免意外重新赋值。
- 配合模块化开发,导出不可变的变量或函数。
const vs let vs var
| 关键字 | 作用域 | 可重新赋值 | 变量提升 | 需初始化 |
|---|---|---|---|---|
const |
块级 | 否 | 否 | 是 |
let |
块级 | 是 | 否 | 否 |
var |
函数级 | 是 | 是 | 否 |
注意事项
- 使用
const时,确保变量值不需要后续修改。 - 对于引用类型,
const仅限制变量绑定,不限制其内部状态的变化。 - 在循环中,
const的行为与let类似,每次迭代创建一个新的绑定。for (const i = 0; i < 3; i++) { // TypeError: Assignment to constant variable console.log(i); }但在
for...of或for...in中可用:for (const item of [1, 2, 3]) { console.log(item); // 1, 2, 3 }






