如果Map中使用值作为键,WeakSet会被垃圾回收吗?

问题描述 投票:0回答:1

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

javascript garbage-collection weak-references
1个回答
0
投票

不,只要它们是

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

为了避免这种情况,请使用

WeakMap
而不是
Map
,它不会按住按键。

© www.soinside.com 2019 - 2024. All rights reserved.