基于this answer ,这将“将所有键加载到内存中”:
Object.keys(o).forEach(function(key) {
var val = o[key];
logic();
});
完成后内存是否“释放”?或者是否需要“nulled ”,或类似的东西?
最佳答案
是的,forEach
完成后,内存将被隐式释放,因为之后堆栈上的任何内容都不会再引用 Object.keys
创建的数组。 (顺便说一句,没有可以取消的变量)
你也可以这样写
{
const keys = Object.keys(obj);
keys.forEach(function(key) {
const val = o[key];
logic();
});
}
更明显的是,整个 keys
数组在迭代过程中都在闲置(与“惰性”for in
枚举相反),而且(当 block 结束时)它立即超出范围。
关于javascript - 完成后,Node.js GC 键中的 Object.keys(o).forEach(...) 迭代是否会发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357605/