Что выведет код Senior Память и сборка мусора обновлено

WeakMap

Вопрос

Что выведет код? По строке на каждый вывод.

const wm = new WeakMap();
let key = { id: 1 };
wm.set(key, 'данные');
console.log(wm.has(key));
console.log(wm.get({ id: 1 }));
try { wm.set('строка', 1); } catch (e) { console.log(e.constructor.name); }

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: true, undefined, TypeError. Почему так WeakMap держит ключи слабо: если на объект больше нет ссылок, запись исчезает вместе с ним.

Что выведет

true
undefined
TypeError

Разбор

Почему так

WeakMap держит ключи слабо: если на объект больше нет ссылок, запись исчезает вместе с ним. Поэтому WeakMap не перечисляется и не имеет size. Применение - приватные данные и кеши, привязанные к времени жизни объектов, без утечек.

Вывод

true
undefined
TypeError

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.