const 的值为什么可以修改?

在 JavaScript 中,使用 const 声明的变量被称为常量,表示它们的值是不可更改的。一旦使用 const 声明一个变量并赋予初始值,就不能再重新赋值给它。

const myVariable = 10;
myVariable = 20; // 报错,不能修改常量的值

然而,需要注意的是,const 仅限制对变量绑定的重新赋值,而不是限制对变量绑定的值的修改。对于复合类型(如对象和数组),const 只保证绑定的引用不可更改,但仍然允许修改引用指向的对象或数组的内容。

const myArray = [1, 2, 3];
myArray[0] = 10; // 可以修改数组元素的值
console.log(myArray); // 输出: [10, 2, 3]

const myObject = { name: 'John', age: 25 };
myObject.age = 30; // 可以修改对象属性的值
console.log(myObject); // 输出: { name: 'John', age: 30 }

const myArray = [1, 2, 3];
myArray[0] = 10; // 可以修改数组元素的值
console.log(myArray); // 输出: [10, 2, 3]

const myObject = { name: 'John', age: 25 };
myObject.age = 30; // 可以修改对象属性的值
console.log(myObject); // 输出: { name: 'John', age: 30 }

这是因为 const 并不创建不可变的对象,它只创建一个不可更改的绑定。如果需要创建完全不可变的对象,可以使用其他方法,如使用不可变数据库或第三方库来实现。

堆内存是一种动态分配的内存空间,用于存储复杂数据类型(如对象、数组)以及函数等。

栈内存是一种相对较小且固定大小的内存空间,用于存储基本数据类型(如数字、字符串、布尔值)以及变量和函数的引用。当创建一个变量时,变量的值被存储在栈内存中,如果变量是一个对象,它实际上存储的是对象在堆内存中的引用地址。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容