Что выведет код 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 ошибок.