Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: const, JavaScript, variable, immutable, assignment

Что произойдет при попытке изменить const?

Вопрос проверяет понимание неизменяемости переменных, объявленных через const, и различий между присваиванием нового значения и мутацией объекта.

Короткий ответ

При попытке напрямую присвоить новое значение переменной, объявленной через const, возникнет ошибка TypeError: Assignment to constant variable. Это происходит потому, что const создаёт неизменяемую привязку (binding) к значению. Однако важно помнить, что если значением 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 не делает объекты неизменяемыми, а лишь защищает саму переменную от переприсваивания.

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#const

#JavaScript

#variable

#immutable

#assignment

Подпишись на React Developer в телеграм