Set vs WeakSet

Set 和 WeakSet 的设计目标、引用语义、遍历能力与使用场景对比。

#type / synthesis #status / growing #resource / javascript #resource / ecmascript

[!info] related notes

Set vs WeakSet

一句话结论

  • Set:通用唯一值集合,能遍历,适合去重和集合运算
  • WeakSet:对象弱引用集合,不能遍历,适合临时标记对象

对比表

维度SetWeakSet
成员类型任意值只能对象
是否唯一
是否可遍历可以不可以
是否有 size没有
引用语义强引用弱引用
典型用途去重、集合运算临时标记、对象访问控制

什么时候用 Set

  • 去重
  • 判断成员是否存在
  • 做并集、交集、差集
  • 需要遍历集合内容

什么时候用 WeakSet

  • 只想标记对象是否处理过
  • 不想因为集合引用导致对象无法回收
  • 不需要遍历所有成员

最短记忆方式

  • Set = 唯一值集合
  • WeakSet = 对象临时标记集合
创建于 2026/4/7 更新于 2026/5/27