在 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 并不创建不可变的对象,它只创建一个不可更改的绑定。如果需要创建完全不可变的对象,可以使用其他方法,如使用不可变数据库或第三方库来实现。
堆内存是一种动态分配的内存空间,用于存储复杂数据类型(如对象、数组)以及函数等。
栈内存是一种相对较小且固定大小的内存空间,用于存储基本数据类型(如数字、字符串、布尔值)以及变量和函数的引用。当创建一个变量时,变量的值被存储在栈内存中,如果变量是一个对象,它实际上存储的是对象在堆内存中的引用地址。