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?就连现代的铬合金车都是童车,你见过吗?