Выбор ответа Senior Память и сборка мусора обновлено
Что возвращает WeakRef.deref
Вопрос
Что вернёт ref.deref() для const ref = new WeakRef(obj)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сам obj, если он ещё не собран, иначе undefined. WeakRef хранит слабую ссылку, не мешающую сборке. deref() возвращает исходный объект (не копию), пока он жив, и undefined после того, как сборщик его освободил.
Варианты ответа
- Всегда копию
obj - Сам
obj, если он ещё не собран, иначеundefinedправильный ответ - Промис, который выполнится, когда объект соберут
trueилиfalseв зависимости от того, жив ли объект
Разбор
WeakRef хранит слабую ссылку, не мешающую сборке. deref() возвращает исходный объект (не копию), пока он жив, и undefined после того, как сборщик его освободил. Момент сборки непредсказуем, поэтому код должен быть готов к обоим вариантам. Уведомление о сборке даёт FinalizationRegistry, и то без гарантий. Спецификация советует использовать WeakRef редко: для кешей больших объектов, а не для логики приложения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.