Вопрос проверяет понимание неизменяемости переменных, объявленных через const, и различий между присваиванием нового значения и мутацией объекта.
Ключевое слово const в JavaScript используется для объявления переменных, которые нельзя переназначить. Это означает, что после инициализации вы не можете присвоить переменной новое значение. Попытка сделать это приведёт к ошибке времени выполнения.
Самый простой случай — попытка изменить примитивное значение или присвоить переменной совершенно новый объект.
const myConst = 10;
myConst = 20; // TypeError: Assignment to constant variable.
Интерпретатор остановит выполнение на этой строке и выбросит ошибку.
Концепция const защищает от изменения ссылки, но не от изменения содержимого объекта, на который эта ссылка указывает. Это часто вызывает путаницу.
const myObject = { name: 'Alice' };
myObject.name = 'Bob'; // Это разрешено! Объект мутирован.
console.log(myObject.name); // 'Bob'
myObject = { name: 'Charlie' }; // TypeError! Попытка изменить саму ссылку.
То же самое работает для массивов:
const myArray = [1, 2, 3];
myArray.push(4); // Разрешено. Массив теперь [1, 2, 3, 4]
myArray[0] = 99; // Разрешено. Массив теперь [99, 2, 3, 4]
myArray = []; // TypeError! Попытка присвоить новую ссылку.
const по умолчанию для всех переменных, значение которых не должно меняться в рамках текущей области видимости. Это делает код более предсказуемым.Object.freeze() или работать через библиотеки (Immutable.js).Вывод: Используйте const для объявления переменных, ссылка на значение которых остаётся постоянной. Это хорошая практика, которая предотвращает множество ошибок. Если вам нужно изменить значение переменной, используйте let. Помните, что const не делает объекты неизменяемыми, а лишь защищает саму переменную от переприсваивания.