使用 const 关键字声明数组 Javascript

Declaring an array with const keyword Javascript

我创建了一个数组 - const cars = ["Saab", "Volvo", "BMW"]; 现在,如果我尝试在特定索引处重新分配值,它会像 - cars[0] = "Toyota"; cars[1] = "Honda"; cars[2] = "Hyundai"; 但是当我尝试像 cars = ["Toyota" , "Honda" , "Hyundai"] 那样一次性重新分配它时,它会抛出一个错误。我在这里无法理解可变性与重新分配的概念。

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

与 strings/numbers 相比,数组或对象按位置而非值映射。

The keyword const is a little misleading. It does NOT define a constant value. It defines a constant reference to a value. Because of this, we cannot change constant primitive values, but we can change the properties of constant objects.

阅读更多:https://www.w3schools.com/js/js_const.asp

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

当您将变量声明为 const 时,它会在内存中分配一个位置并表示 "you may only look here for data!" 它不会说 "this is the only data you can read",因此您可以更改该位置的数据但您不能给它是一组全新的数据,因为这将存在于内存中的其他地方。

当您分配给变量 cars 时,您基本上是在尝试更改它违反 const 的引用,但是当您尝试修改 cars[0]='some value' 中的值(示例 cars[0]='some value') =10=] 它的引用仍然相同,值已更改,您需要了解对象 cars 的引用仍然保持不变。