В чем разница между Map, Set, WeakMap, WeakSet

«В чем разница между Map, Set, WeakMap, WeakSet» — вопрос из категории JavaScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Map и Set хранят сильные ссылки на ключи/значения, что может мешать сборщику мусора. WeakMap и WeakSet используют слабые ссылки, позволяя удалять объекты, если на них нет других ссылок.

Map:

  • Хранит пары ключ-значение.
  • Ключи могут быть любого типа.
  • Поддерживает итерацию.
const map = new Map();
map.set('key', 'value');

Set:

  • Хранит только уникальные значения.
  • Поддерживает итерацию.
const set = new Set();
set.add(1);

WeakMap:

  • Ключи только объекты.
  • Не поддерживает итерацию.
  • Автоматически удаляет записи при удалении ключа.
const weakMap = new WeakMap();
weakMap.set({}, 'value');

WeakSet:

  • Хранит только объекты.
  • Не поддерживает итерацию.
  • Автоматически удаляет объекты при их удалении из памяти.
const weakSet = new WeakSet();
weakSet.add({});