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

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

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

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

Подробнее