gpt4 book ai didi

javascript - Map 的垃圾收集最近有变化吗?

转载 作者:行者123 更新时间:2023-11-30 09:32:21 25 4
gpt4 key购买 nike

MapWeakMap 之间的主要区别(如我所想):

如果我们在 Map 中存储了一个对象,之后该对象没有在其他地方被引用,该对象仍然不会被包含在垃圾回收过程中,我们仍然可以访问它 map 。

但是,如果它存储在 WeakMap 中,然后该对象没有在代码中的其他地方引用,那么它将被垃圾收集。

现在看看这个例子和我得到的输出,它看起来甚至是 Map 中的对象,它在其他地方不再有引用,现在正在被垃圾收集:

const userRoles = new Map();
let Corey = { name: "Corey", age: "40" };

userRoles.set(Corey, "Admin");

Corey = null;

console.log(userRoles.get(Corey)); // Undefined ??

规范是否因为我在 MDN 中看不到关于它的某种声明或我误解了什么而改变了?

最佳答案

console.log(userRoles.get(Corey)); // Undefined ??

它是 undefined 因为您的 map 中没有 null 的条目。您已将 Corey 设置为 null,因此当您运行该行代码时,您正在执行 userRoles.get(null)

在对象下键入的条目仍然存在。您可以通过迭代找到它,keys 可迭代等:

const userRoles = new Map();
let Corey = { name: "Corey", age: "40" };

userRoles.set(Corey, "Admin");

Corey = null;

console.log(userRoles.get(Corey)); // Undefined
console.log(Array.from(userRoles.keys())[0]);

关于javascript - Map 的垃圾收集最近有变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45524371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com