Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setInterval处理程序是否被视为内存泄漏?_Javascript_Node.js_Memory Leaks - Fatal编程技术网

Javascript setInterval处理程序是否被视为内存泄漏?

Javascript setInterval处理程序是否被视为内存泄漏?,javascript,node.js,memory-leaks,Javascript,Node.js,Memory Leaks,javascript代码: function blah() { var blahInterval = setInterval(function(){ if( some_global_variable == 5 ) clearInterval(blahInterval); }, 1000); } 我有多个变体的代码,它将在NodeJS脚本中被调用无数次。我是否应该删除blahInterval在清除间隔之后 这是内存泄漏吗?或者,一旦set

javascript代码:

function blah()
{
    var blahInterval = setInterval(function(){ 
        if( some_global_variable == 5 )
            clearInterval(blahInterval);
    }, 1000);
}
我有多个变体的代码,它将在NodeJS脚本中被调用无数次。我是否应该
删除blahInterval
清除间隔之后


这是内存泄漏吗?或者,一旦setInerval函数超出范围,GC将对其进行清理

GC应在其超出范围时对其进行清理。只要if条件可以为false,就可以清除间隔。我不认为它是内存泄漏。

全局变量用一些外部事件来改变,所以这个SETIFEL HAND处理程序可以执行一次或几百次!因此,问题是“什么时候
blahInterval
超出范围?”在
blah()的每个函数调用中都会创建一个本地
blahInterval
。因此,考虑到if语句是相同的,每个语句都将在同一时间超出范围。如果
blahInterval
是一个全局变量,我们就会遇到问题,因为覆盖时会有无法清除的间隔。因为是本地的,所以我们没有这个问题。