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

Вывод будет undefined и 'b'. Оба объекта-ключа преобразуются в одинаковую строку '[object Object]', поэтому вторая запись перезаписывает первую.

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

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

Вывод будет undefined и 'b'. Оба объекта-ключа преобразуются в одинаковую строку '[object Object]', поэтому вторая запись перезаписывает первую.

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

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

Условие

Нужно выяснить, какой результат будет напечатан в консоль при выполнении следующего кода:

 const a = { a: "a" };
const b = { b: "b" };
const c = {};

c[a] = a;
c[b] = b;

console.log(c[a].a, c[b].b);

Ответ

Вывод будет undefined и 'b'. Оба объекта-ключа преобразуются в одинаковую строку '[object Object]', поэтому вторая запись перезаписывает первую.

После c[a] = a существует одно свойство со строковым ключом. Операция c[b] = b использует тот же ключ и сохраняет объект b. Поэтому c[a] и c[b] теперь возвращают один и тот же b.

У b нет свойства a — получается undefined; свойство b равно строке 'b'. Чтобы разные объекты оставались разными ключами по идентичности, используйте Map и его set/get вместо обычного индексирования объекта.

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

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

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

Подробнее