我正在维护一个JavaScript代码,其中执行一些繁重处理以生成数组的函数会将结果保存在函数本身内部的缓存变量中。它是这样实现的:

function heavyProcessingStuff(x) {
    if(heavyProcessingStuff.cache == undefined)
       heavyProcessingStuff.cache = [];

    if(heavyProcessingStuff.cache[x] != undefined) {
       return heavyProcessingStuff.cache[x]
    } else {
      return heavyProcessingStuff.cache[x] = x + 1
    }
}

奇怪的是,在页面卸载时执行了一个函数,该函数手动删除了缓存变量的每个属性,如下所示:
for (n in heavyProcessingStuff.cache) {
  delete heavyProcessingStuff.cache[n]
}

我对为什么要这样实现感到困惑。
这是针对某些奇怪的极端情况吗?有这样做的动力吗?页面关闭时,浏览器是否/不应该垃圾收集所有内容?

最佳答案

Javascript使用垃圾回收,最好不要显式释放内存。在"Writing Fast, Memory-Efficient JavaScript"中的“取消引用误解”中对此有很好的理解。

文章引用:

07-28 08:58