Определение вывода console.log в JavaScript‑фрагменте

Оба раза будет выведено 'ho'. Сначала переменные указывают на один объект, а последующее присваивание нового объекта firstObj не меняет ссылку secondObj.

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

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

Оба раза будет выведено 'ho'. Сначала переменные указывают на один объект, а последующее присваивание нового объекта firstObj не меняет ссылку secondObj.

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

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

Условие

Укажите, какие значения будут напечатаны функцией console.log в приведённом коде.

let firstObj = { greeting: 'hey' };
let secondObj = firstObj;
firstObj.greeting = 'ho';
console.log(secondObj.greeting);
firstObj = { greeting: 'hello' };
console.log(secondObj.greeting);

Ответ

Оба раза будет выведено 'ho'. Сначала переменные указывают на один объект, а последующее присваивание нового объекта firstObj не меняет ссылку secondObj.

Изменение firstObj.greeting = 'ho' меняет общий объект, поэтому secondObj видит новое значение. Затем firstObj = { greeting: 'hello' } переключает только первую переменную на другой объект. secondObj продолжает ссылаться на старый объект с greeting === 'ho'. Мутация объекта и переназначение переменной — разные операции.

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

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

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

Подробнее