【问题标题】:Declaring an array with const keyword Javascript使用 const 关键字 Javascript 声明数组
【发布时间】:2020-05-09 15:24:09
【问题描述】:
我创建了一个数组 - const cars = ["Saab", "Volvo", "BMW"];
现在,如果我尝试在特定索引处重新分配值,它就像 - cars[0] = "Toyota"; cars[1] = "Honda"; cars[2] = "Hyundai";
但是当我尝试像 cars = ["Toyota" , "Honda" , "Hyundai"] 这样一次重新分配它时,它会引发错误。我在这里无法理解可变性与重新分配的概念。
【问题讨论】:
标签:
javascript
arrays
constants
immutability
mutability
【解决方案1】:
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
数组或对象是按位置映射的,而不是与字符串/数字相比的值。
【解决方案2】:
关键字 const 有点误导。
它没有定义一个常数值。它定义了对值的常量引用。
因此,我们无法更改常量原始值,但可以更改常量对象的属性。
阅读更多:https://www.w3schools.com/js/js_const.asp
一旦声明了 const,它就只能指向那个特定的数据,你可以改变这个数据中的东西,但你不能让它指向其他地方。
当您将变量声明为 const 时,它会在内存中为其分配一个位置并说“您只能在此处查找数据!”它没有说“这是您可以读取的唯一数据”,因此您可以更改该位置的数据,但您不能为其提供全新的数据集,因为这将存在于内存中的其他位置。
【解决方案3】:
当您分配给变量cars 时,您基本上是在尝试更改它的引用,这违反了const,但是当您尝试修改cars 中的值(例如cars[0]='some value')时,它的引用仍然相同, value 改变了,你需要了解 object cars 的引用仍然保持不变。