Выбор ответа Junior Области видимости и замыкания спрашивают часто обновлено
Можно ли менять объект в const
Вопрос
Что произойдёт?
const user = { name: 'Аня' };
user.name = 'Оля';
user = { name: 'Катя' };
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка на третьей строке: TypeError при переприсваивании const. const запрещает только переприсваивать саму переменную.
Варианты ответа
- Ошибка на второй строке: свойства const-объекта менять нельзя
- Ошибка на третьей строке: TypeError при переприсваивании constправильный ответ
- Ошибок нет:
user.nameстанет'Катя', аuserновым объектом - SyntaxError ещё до выполнения: переприсваивание
constвидно парсеру
Разбор
const запрещает только переприсваивать саму переменную. Менять содержимое объекта можно, поэтому вторая строка работает. Третья пытается записать в user новую ссылку и бросает TypeError: Assignment to constant variable во время выполнения. Это не SyntaxError: парсер такой код пропускает. Чтобы запретить изменение свойств, нужен Object.freeze, и он замораживает только верхний уровень.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.