Влияние присваивания null на объект‑ссылку

Как написано, a = null выбросит TypeError: a объявлена через const. Последующий console.log(b) без перехвата ошибки не выполнится; сам массив и объект останутся неизменными.

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

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

Как написано, a = null выбросит TypeError: a объявлена через const. Последующий console.log(b) без перехвата ошибки не выполнится; сам массив и объект останутся неизменными.

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

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

Условие

Разберём, что произойдёт с выводом в консоль, если раскомментировать строку console.log(b). Рассмотрим следующий код:

const a = {
  a: 'jsdf',
  b: 4
};

const b = [a];

a = null;

Обратите внимание, как изменение переменной a влияет (или не влияет) на массив b, в котором хранилась ссылка на объект, и какой результат будет выведен при попытке вывести b.

Ответ

Как написано, a = null выбросит TypeError: a объявлена через const. Последующий console.log(b) без перехвата ошибки не выполнится; сам массив и объект останутся неизменными.

Если заменить const a на let, присваивание null станет допустимым, но массив b продолжит хранить ссылку на прежний объект { a: 'jsdf', b: 4 }. Обнуление одной переменной не уничтожает объект, пока к нему есть другая достижимая ссылка. Для точного ответа важно сначала учесть ошибку const, а не анализировать исходник как будто он использует let.

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

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

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

Подробнее