Влияние const и let на изменение полей объекта

Будут выведены { item: 'bar' } и { item: 'foo' }. const запрещает переназначить переменную, но не запрещает менять свойства объекта, на который она указывает.

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

Что ответить на собеседовании

Будут выведены { item: 'bar' } и { item: 'foo' }. const запрещает переназначить переменную, но не запрещает менять свойства объекта, на который она указывает.

Подробный разбор

Ответ с пояснениями

Условие

Укажите, какой вывод появится в консоли после выполнения следующего фрагмента кода:

const constObj = {
  item: "foo",
};

let letObj = {
  item: "bar",
};

constObj.item = "bar";
letObj.item = "foo";

console.log(constObj, letObj);

Ответ

Будут выведены { item: 'bar' } и { item: 'foo' }. const запрещает переназначить переменную, но не запрещает менять свойства объекта, на который она указывает.

Оба присваивания свойствам допустимы. Ошибка возникла бы при constObj = другойОбъект, а не при constObj.item = .... let дополнительно разрешает заменить саму ссылку. Для запрета изменения верхнеуровневых свойств применяется Object.freeze, но он не делает вложенные объекты автоматически неизменяемыми.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее