Объявление массива с ключевым словом const Javascript - PullRequest
0 голосов
/ 09 мая 2020

Я создал массив - const cars = ["Saab", "Volvo", "BMW"]; Теперь, если я пытаюсь переназначить значения по указанным c индексам, он работает как - cars[0] = "Toyota"; cars[1] = "Honda"; cars[2] = "Hyundai";, но когда я пытаюсь переназначить его за один раз, например cars = ["Toyota" , "Honda" , "Hyundai"], он выдает ошибка. Я не могу понять концепцию изменчивости и переназначения здесь.

Ответы [ 3 ]

1 голос
/ 09 мая 2020
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 голосов
/ 09 мая 2020

Когда вы присваиваете переменную cars, вы в основном пытаетесь изменить ссылку, которая нарушает const, но когда вы пытаетесь изменить значение (пример cars[0]='some value') в cars, ссылка остается прежней , значение изменилось, нужно понимать, что ссылка на объект cars остается прежней.

0 голосов
/ 09 мая 2020

Ключевое слово const немного вводит в заблуждение. Он НЕ определяет постоянное значение. Он определяет постоянную ссылку на значение. Из-за этого мы не можем изменять константные примитивные значения, но мы можем изменять свойства константных объектов.

подробнее: https://www.w3schools.com/js/js_const.asp

once const объявлен, что он может указывать только на эти c данные, вы можете изменять что-то в этих данных, но вы не можете указать ему указывать в другом месте.

Когда вы объявляете переменную как const, она назначает ей место в памяти и говорит: "Вы можете искать только здесь данные!" в нем не говорится, что «это единственные данные, которые вы можете прочитать», поэтому вы можете изменить данные в этом месте, но вы не можете дать ему совершенно новый набор данных, так как он мог бы существовать где-то еще в памяти.

...