Будут выведены undefined и b. Оба объектных ключа преобразуются в одинаковую строку '[object Object]', поэтому второе присваивание заменяет первое.
Определение вывода console.log в JavaScript‑примере
Будут выведены 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[b] = b по общему строковому ключу хранится объект b, у которого нет свойства a, но есть b со значением 'b'. Чтобы различать объектные ключи по идентичности, используйте Map и её методы set/get.