如果在 Map 中将值用作键,WeakSet 是否会被垃圾回收?

Will WeakSet be garbage collected if values are used as keys in Map?

提问人:Djordje Vuckovic 提问时间:8/25/2023 最后编辑:BergiDjordje Vuckovic 更新时间:8/25/2023 访问量:23

问:

我有一些 HTML elemenets 在 ES6 Maps 中用作键,我还有一个“WeakSet”,其中包含那些相同的 HTML 元素作为值,现在这些 HTML 元素最终将被其他一些功能从 DOM 中删除,然后它们会被 WeakSet 垃圾收集,即使它们仍然用作 Map 中的键?

javascript 垃圾回收 引用弱 映射

评论


答:

2赞 Bergi 8/25/2023 #1

不,只要它们是垃圾收集的一部分,它们就不会被垃圾回收(并且地图本身不是垃圾回收的)。您仍然可以通过迭代地图来访问它们。随后,它们仍将是 的一部分(只要集合本身不是垃圾回收的)。Map.keys()WeakSet

为避免这种情况,请使用 a 而不是 ,它不会保留键。WeakMapMap