是否有必要每次都清除超时变量

时间:2011-11-30 13:57:11

标签: javascript settimeout

在我的应用程序中,我使用了很多setTimeout函数,所以我担心它是否会导致性能问题:

setTimeout(function(){
  // do something
},0);

我发现人们用这种方式:

var t=setTimeout(function(){
  // do something
  clearTimeout(t);
});

我想知道是否有必要?

4 个答案:

答案 0 :(得分:1)

不,对象将被自动销毁(至少应该是)。当您需要删除已设置的超时时,需要调用clearTimeout

Ex:你在将一些元素悬停时将超时设置为5秒,但是用户在超时之前将光标从元素中移出 - 所以你需要删除已经初始化的超时。

答案 1 :(得分:1)

不,这不是必要的。使用clearTimeout()取消安排将来仍然存在的超时(即阻止发生)。

在发生(或发生)之后清除超时没有任何正面影响。

这就足够了。

setTimeout(function(){
  // do something
},0);

答案 2 :(得分:1)

不,不是。只有在需要在超时发生之前取消超时时才需要该变量。从回调内部调用clearTimeout无效,因为不再有超时停止。

答案 3 :(得分:1)

只有你想在它发生之前取消它 - 你将永远无法以0的延迟停止......