我有一个名为 uids 的变量
var uids = [];
然后我向其属性写入一些值
uids[16778923] = "3fd6335d-b0e4-4d77-b304-d30c651ed509"
但在此之前
if (!uids[user.id]) {
uids[user.id] = generateKey(user);
}
这东西表现得很好。如果我尝试获取它的属性的值
uids[currentUser.id]
它会给我这个属性的值。如果我尝试调用一些方法,例如
Object.keys(uids);
它会给我我所期望的。谜团来了……
uids;
RAM 完好无损。 See the node eating ram
我现在很困惑。怎么了?
最佳答案
这是因为您正在创建一个巨大的数组, Node 将为它保留内存 - 谁知道会发生什么。我想说的是,在这种情况下,您可以使用 Map
(或普通对象,但 Map
在这里感觉更好。
var uids = new Map();
var key = 456464564564654;
if (! uids.has(key)) {
uids.set(key, generateKey(user))
}
关于javascript - Node.JS 的行为很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39924051/