WeakSet 能不能用来缓存 DOM 元素避免内存泄漏?

设计师红会 阅读 34

我最近在做一个动态表单,需要临时标记某些 input 元素是否已校验过。听说 WeakSet 不会阻止垃圾回收,就试着用它存 DOM 节点,但不确定是不是真的能防内存泄漏。比如下面这段样式:

.validated {
  border: 2px solid green;
}
.pending {
  border: 1px dashed gray;
}

我用 const validatedInputs = new WeakSet(); 存节点,但发现即使元素被移除了,WeakSet 里的引用好像还在?还是说我理解错了它的使用场景?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
Top丶红毅
问题在于 WeakSet 确实不会阻止垃圾回收,但如果你的 DOM 元素仍然被其他引用持有,它们不会被回收。你需要确保 DOM 元素没有其他强引用。
点赞
2026-03-23 09:01