Skip to content
快看这页儿写了啥...

JS 中 map、set 与 weakMap、weakSet 区别?

题干

  • map、set

  • weakMap、weakSet

题解

JS 中,MapSet 是两种常用的数据结构,WeakMapWeakSet 则是它们的 "弱化" 版本,它们之间的区别主要有以下几点:

  • MapSet 是强引用,而 WeakMapWeakSet 是弱引用。也就是说,如果一个对象被 MapSet 引用,即使这个对象在其他地方没有被引用,它也不会被垃圾回收。但是,如果一个对象只被 WeakMapWeakSet 引用,那么它会被垃圾回收,不会产生内存泄漏。

  • WeakMapWeakSet 只能引用对象,而 MapSet 可以引用任何类型的值。

  • WeakMapWeakSet 不支持迭代,因为它们的成员可能随时被垃圾回收。

  • WeakMapWeakSet 不能直接获取其大小,因为其成员可能随时被垃圾回收。

总之,WeakMapWeakSet 主要用于需要引用对象但又不想影响垃圾回收的场景,比如缓存、事件监听等。而 MapSet 则适用于一般的数据结构需求。

相关

JS 中 Map 和 Object、Set 和 Array

贡献者

isboyjc's avatar isboyjc

浏览量(PV)  次  ·  独立访客(UV)  人次
不正经的前端 | 八股 · 欢迎 star ⭐