js const实现
在 JavaScript 中,const 用于声明一个常量,其值在初始化后不可重新赋值。以下是关于 const 的详细实现和使用说明:
基本语法
const 的声明方式与 let 类似,但必须在声明时初始化:
const PI = 3.14159;
不可重新赋值
使用 const 声明的变量不可重新赋值,否则会抛出错误:
const name = 'Alice';
name = 'Bob'; // TypeError: Assignment to constant variable
块级作用域
const 与 let 一样具有块级作用域,仅在声明所在的代码块内有效:
if (true) {
const message = 'Hello';
console.log(message); // 'Hello'
}
console.log(message); // ReferenceError: message is not defined
对象和数组的可变性
const 仅保证变量绑定的不可变性,而非对象或数组内容的不可变性。可以修改对象属性或数组元素:
const person = { name: 'Alice' };
person.name = 'Bob'; // 允许修改属性
person.age = 30; // 允许添加属性
const numbers = [1, 2, 3];
numbers.push(4); // 允许修改数组
暂时性死区
const 声明的变量也存在暂时性死区(TDZ),在声明前访问会抛出错误:
console.log(value); // ReferenceError: Cannot access 'value' before initialization
const value = 10;
全局和函数作用域
const 不会成为全局对象的属性(与 var 不同):
const globalConst = 'test';
console.log(window.globalConst); // undefined(在浏览器环境中)
最佳实践
- 优先使用
const,除非需要重新赋值。 - 对于需要保护的常量对象,可以使用
Object.freeze():const config = Object.freeze({ apiUrl: 'https://example.com' }); config.apiUrl = 'new-url'; // 静默失败(严格模式下抛出错误)
注意事项
const必须初始化,否则会报错:const x; // SyntaxError: Missing initializer in const declaration- 不可重复声明:
const x = 1; const x = 2; // SyntaxError: Identifier 'x' has already been declared
const 是现代 JavaScript 开发中的首选声明方式,有助于减少意外修改导致的错误。







