Выбор ответа Junior Области видимости и замыкания спрашивают часто обновлено

Можно ли менять объект в const

Вопрос

Что произойдёт?

const user = { name: 'Аня' };
user.name = 'Оля';
user = { name: 'Катя' };

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ошибка на третьей строке: TypeError при переприсваивании const. const запрещает только переприсваивать саму переменную.

Варианты ответа

  1. Ошибка на второй строке: свойства const-объекта менять нельзя
  2. Ошибка на третьей строке: TypeError при переприсваивании constправильный ответ
  3. Ошибок нет: user.name станет 'Катя', а user новым объектом
  4. SyntaxError ещё до выполнения: переприсваивание const видно парсеру

Разбор

const запрещает только переприсваивать саму переменную. Менять содержимое объекта можно, поэтому вторая строка работает. Третья пытается записать в user новую ссылку и бросает TypeError: Assignment to constant variable во время выполнения. Это не SyntaxError: парсер такой код пропускает. Чтобы запретить изменение свойств, нужен Object.freeze, и он замораживает только верхний уровень.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.