我试图理解为什么a
之后的这个小函数在about:memory选项卡下达到近200,000,它说devtools的总内存是:1079408k?有谁可以解释为什么?
var a = 0;
(function loop(){
a++;
console.count();
call = setTimeout(loop);
})()
答案 0 :(得分:6)
评论中有猜测,但没人检查,所以I did it:
删除console.count()
后,内存会停止增长。你看到的只是控制台的增长:这些线必须存储在某个地方。
答案 1 :(得分:0)
函数本身在循环中无限延续。
call = setTimeout(loop);
再次调用该函数,再次调用该行。没有return语句,因此递归永远不会停止并且无限循环。
正如评论中指出的那样,它不一定是递归的,因为没有堆栈建立。内存正在积累,因为正如破坏所指出的那样
console.count();
导致控制台计算调用函数的次数,并且由于它被无限调用,因此内存很快会被数千行console.count()
输出填充。