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

-2
Tanmay Lodha 9 Май 2020 в 18:24

4 ответа

Const

const создает только для чтения ссылка на значение. Это не означает, что значение, которое оно содержит, является неизменным, просто то, что идентификатор переменной не может быть переназначен. Например, в случае, когда содержимое является объектом, это означает, что содержимое объекта (например, его свойства) может быть изменено.

0
Mamun 9 Май 2020 в 15:26

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

Читать больше: https://www.w3schools.com/js/js_const.asp

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

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

0
Jason Stephenson 9 Май 2020 в 15:29

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

0
pavan kumar 9 Май 2020 в 15:29
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
Arun Mohan 9 Май 2020 в 15:29