使用常量关键字Javascript声明数组

使用常量关键字Javascript声明数组,javascript,arrays,constants,immutability,mutability,Javascript,Arrays,Constants,Immutability,Mutability,我创建了一个数组-const cars=[Saab、Volvo、BMW]; 现在,如果我尝试重新分配特定索引的值,它的工作原理类似于-cars[0]=Toyota;汽车[1]=本田;汽车[2]=现代; 但当我试图像汽车一样一次性重新分配它时(丰田、本田、现代),它抛出了一个错误。我无法理解这里的易变性与重新分配的概念 const str = 'abcd'; str = 'changed'; //error const list = [1,2,3]; // Assume this array

我创建了一个数组-const cars=[Saab、Volvo、BMW]; 现在,如果我尝试重新分配特定索引的值,它的工作原理类似于-cars[0]=Toyota;汽车[1]=本田;汽车[2]=现代; 但当我试图像汽车一样一次性重新分配它时(丰田、本田、现代),它抛出了一个错误。我无法理解这里的易变性与重新分配的概念

const str = 'abcd';
str = 'changed'; //error


const list = [1,2,3]; // Assume this array is created on memory loc 0x001 (imaginary)

list[0] = 200; // no error  here the memory location remains constant but the content changes.

list = [6,4,2]; // error Here new assignment hence memory location changes so error
数组或对象按位置映射,而不是按与字符串/数字相比的值映射

关键字const有点误导人。 它不定义常量值。它定义了对值的常量引用。 因此,我们无法更改常量基本体值,但可以更改常量对象的属性

阅读更多:

一旦const被声明,它只能指向该特定数据,您可以更改该数据中的内容,但不能告诉它指向其他地方


当您将变量声明为const时,它会在内存中为其分配一个位置,并表示您只能在此处查找数据!它并没有说这是你能读到的唯一数据,因此,您可以更改该位置的数据,但不能为其提供一组全新的数据,因为这将存在于内存中的其他位置。

当您分配给可变车辆时,您基本上是试图更改其引用,这违反了常量,但当您试图修改值示例车辆[0]='some value'在汽车中,其参考值仍然相同,值已更改,您需要了解目标汽车的参考值仍然相同。

您是否阅读了MDN文档?