Back to results for “Memory Management”
JavaScript › Map, Set, WeakMap & WeakSet

When would you choose a WeakSet over a Set?

Intermediate

Answer

WeakSet holds object references weakly (like WeakMap), so it's useful for tracking membership (e.g. 'has this object already been processed?') without creating a memory leak by keeping those objects alive forever once they're no longer used elsewhere.
const visited = new WeakSet();
function process(obj) {
  if (visited.has(obj)) return;
  visited.add(obj);
  // ... do work
}
Real-world example Marking objects as 'already visited' during a recursive traversal without leaking memory for large object graphs.

Common follow-ups: Why can't a WeakSet store primitive values like numbers or strings?