javascript - Node.JS 的行为很奇怪

标签 javascript node.js

我有一个名为 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/

相关文章:

javascript - Babel 没有转译 npm link/symlink 包源代码

javascript - Chrome 扩展消息传递 : Unchecked runtime. lastError : Could not establish connection. 接收端不存在

javascript - 如何根据 ng-repeat 中选定的颜色更改 div 的背景颜色

javascript - AWS Lambda HTTP POST 请求 (Node.js)

node.js - 如何触发带有嵌套 promise 的单个错误处理程序?

json - 无法解析 AWS.EC2.describeInstances() 方法在 nodejs API 中返回的 JSON

javascript - Firebase 高级字典搜索

javascript - 如何格式化 Ruby 数组以用作 Highcharts 中的数据

linux - NPM 模块安装需要 sudo 的原始原因是什么?

sql-server - Sequelize Query,多对多关系问题