Можно ли переменной const в JS присваивать значение Повторно?

Ребята, я Абсолютный Новичок, в JS, поэтому Будьте Снисходительны!! И НЕ бейте по рукам!! В обучающем видео смотрел, что при Повторном присвоении значения переменной const - должна выскакивать Ошибка..... Но у меня в Хром-консоли НИкакой ошибки Нет, а Переприсвается значение....

Что я не так понимаю? - подскажите.


Ответы (3 шт):

Автор решения: Mira

Так и есть, вот пример кода - при переназначении переменной выводиться ошибка. Вы можете так же попробовать вбить этот код прям в консоли браузера - будет ошибка.

const i = 10;
i = 5;

→ Ссылка
Автор решения: Алексей Шиманский

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

Так что возможно у вас была такая проблема именно с объектом, а не с каким-нибудь примитивом

→ Ссылка
Автор решения: Андрей Кикин

Например ошибки не будет в таком случае:

const myArray = [0, true, 'hi', null, 999];       //создадим 'константу'
console.log(`Первоначальный массив: ${myArray}`); //проверим содержимое

myArray[2] = 15;                                  //изменим значение 'hi' на 15
console.log(`Изменённый массив: ${myArray}`);     //проверим содержимое снова

Но код не выполнится в таком:

const myArray = [0, true, 'hi', null, 999];       //создадим 'константу'
console.log(`Первоначальный массив: ${myArray}`); //проверим содержимое

myArray = [0, true, 15, null, 999];               //попробуем изменить значение 'hi' на 15
console.log(`Изменённый массив: ${myArray}`);     //проверим содержимое снова

Все потому что в языке существуют разные типы данных:

  1. Примитивы - передают значение(числа, строки, булевы значения и т.д.)
  2. Объекты - передают ссылку на значение(объекты, массивы, функции и т.д.)

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

Больше про типы данных можно узнать здесь: mdn web docs

→ Ссылка