使用const关键字Javascript声明数组

问题描述 投票:-2回答:4

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

javascript arrays const immutability mutability
4个回答
0
投票

const

const声明创建对值的只读引用。这并不意味着它拥有的值是不可变的,只是不能重新分配变量标识符。例如,在内容是对象的情况下,这意味着可以更改对象的内容(例如其属性)。


0
投票
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

数组或对象是按位置映射的,而不是与字符串/数字相比的值。


0
投票

关键字const有点误导。它没有定义常数。它定义了对值的常量引用。因此,我们不能更改常量原始值,但是可以更改常量对象的属性。

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

一旦声明为const,它只能指向该特定数据,则可以更改此数据中的内容,但不能告诉它指向其他位置。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.