【发布时间】:2019-04-10 04:56:12
【问题描述】:
const map = {}
for (let i=0;i<10**5;i++) {
map[i] = true
}
let ans = 0
for (let i in map) {
for (let j in map) {
ans += i+j
}
}
console.log(ans)
上述代码使用node运行时返回如下错误-
致命错误:在堆限制分配附近标记压缩无效 失败 - JavaScript 堆内存不足 1: 0x100037ddb node::Abort() [/usr/local/bin/node]
有人可以解释原因吗? map 被实例化得很好。只有当我遍历 map 键并将它们添加到我的 ans 变量时我才会遇到这个问题?
但是以下类似的代码可以正常工作并打印 ans -
let ans = 0
for (let i=0;i<10**5;i++) {
for (let j=0;j<10**5;j++) {
ans += i+j
}
}
console.log(ans)
这背后的逻辑是什么。为什么循环遍历 map 中的键如此糟糕?
节点版本v10.7.0
【问题讨论】:
标签: javascript node.js dictionary