这个Object.keys(o).forEach(…)是否在node.js GC密钥迭代完成后执行?
基于这个答案 ,这将“ 加载所有的钥匙到内存 ”:
Object.keys(o).forEach(function(key) { var val = o[key]; logic(); });
记忆被“释放”了吗? 还是有什么东西需要“ 零 ”呢?
是的,在forEach
完成之后,内存将被隐式释放,因为堆栈中没有任何内容会再引用由Object.keys
创build的数组。 (没有variables取消,顺便说一句)
你可以写等价的
{ const keys = Object.keys(obj); keys.forEach(function(key) { const val = o[key]; logic(); }); }
在迭代过程中整个keys
数组是悬而未决的(与枚举中的“惰性”相反),并且在块结束之后立即超出范围。