Javascript 在窗口卸载之前清除间隔的原因?
我注意到,在一些使用Javascript 在窗口卸载之前清除间隔的原因?,javascript,browser,compatibility,setinterval,Javascript,Browser,Compatibility,Setinterval,我注意到,在一些使用setInterval的JavaScript库中,该库会将一个事件侦听器绑定到窗口的unload事件,以便使用clearInterval清除所有创建的间隔 一个例子是History.js,它保存了一个 片段: // ==================================================================== // Interval record /** * History.intervalList * List of inte
setInterval
的JavaScript库中,该库会将一个事件侦听器绑定到窗口的unload
事件,以便使用clearInterval
清除所有创建的间隔
一个例子是History.js,它保存了一个
片段:
// ====================================================================
// Interval record
/**
* History.intervalList
* List of intervals set, to be cleared when document is unloaded.
*/
History.intervalList = [];
/**
* History.clearAllIntervals
* Clears all setInterval instances.
*/
History.clearAllIntervals = function(){
var i, il = History.intervalList;
if (typeof il !== "undefined" && il !== null) {
for (i = 0; i < il.length; i++) {
clearInterval(il[i]);
}
History.intervalList = null;
}
};
/**
* Clear Intervals on exit to prevent memory leaks
*/
History.Adapter.bind(window,"unload",History.clearAllIntervals);
所以,我的问题是,为什么一些JavaScript作者会这样做?当浏览器离开页面时,这些间隔似乎会自动清除(我从来没有见过这样做)。这样做有好处吗?它是否补偿了某种浏览器缺陷?如果是,它会影响什么bug和哪些浏览器?如评论中所述
js是一款用JavaScript编写的无头浏览器,不再处于开发阶段。至少可以说,这绝对是一个边缘案例。我猜这个问题是由JavaScript本身的限制引起的
用户兰斯·伦纳德(Lance Leonard)在评论中指出,如果有正当理由这样做,那么有一个有趣的问题。亚历山大·奥马拉:这真的重要吗?出于某种原因,另一个库要求这样做。在这种情况下,清理事件绑定不是必需的,但也可以认为这是一种良好的做法,可能有助于阻止旧浏览器中的内存泄漏。@zerkms,我原则上同意你的意见,但我也不编写浏览器代码,也不能总是假设它们行为正确。您是否使用过Internet Explorer 6?就连现代的铬合金车都是童车,你见过吗?