> Что такое слабая ссылка в WeakSet и WeakMap в JavaScript (JavaScript)

Уровень: junior · Роль: frontend · Категория: Технические вопросы

Компании: ООО Снэп АйТи

Стек: JavaScript

> Пример ответа

Слабая ссылка (weak reference) - это ссылка на объект, которая не препятствует его сборке мусора (garbage collection). В JavaScript WeakSet и WeakMap хранят именно такие ссылки на свои ключи (в WeakMap ключи - объекты, в WeakSet - объекты-значения). Если на объект больше нет других сильных ссылок (например, из переменных или других коллекций), сборщик мусора может удалить его из памяти, и запись автоматически исчезнет из WeakSet/WeakMap.

Пример с WeakMap:

JAVASCRIPT
let obj = { data: 'secret' };
const wm = new WeakMap();
wm.set(obj, 'value');
obj = null; // удаляем сильную ссылку
// Теперь obj может быть собран сборщиком мусора,
// и запись в wm будет удалена автоматически.

Ключевые особенности:

  • Нельзя перебрать элементы (нет методов keys(), values(), entries(), size), так как содержимое может измениться в любой момент из-за GC.

  • Применяются для кэширования, хранения метаданных или приватных данных, связанных с объектами, без утечек памяти.

  • В WeakSet ключи - только объекты (не примитивы), в WeakMap ключи - только объекты, значения - любые типы.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью