JavaScript清理&#34中引用的(本地)对象;延迟"功能

时间:2016-03-29 12:04:10

标签: javascript

JavaScript(纯粹的,不是jQuery,如果重要的话)知道清除/释放/释放上一次对#34;延迟"中的对象的引用从计时器或事件调用的函数?

请使用以下代码:

function myInitFunc()
{
  var myInitObj = new Object();
  myInitObj.properties = lotsOfStuff;

  var myDelayedInitFunc = function ()
  {
    doSomethingWith(myInitObj);
    // I shall not be accessing myInitObj again now.
  };

  // Let's say, *one* of the following:
  setTimeout(myDelayedInitFunc, 1000);
  window.addEventListener('load', myDelayedInitFunc);
  document.addEventListener('DOMContentLoaded', myDelayedInitFunc);
}

请注意,myDelayedInitFunc()故意访问myInitObj的本地变量myInitFunc()

例如,http://javascript.info/tutorial/memory-leaks表示" setTimeout / setInterval中使用的函数也在内部引用并跟踪直到完成,然后清理"。这是"清理"明白它可以摆脱myInitObj以及函数本身?我有点猜测它......

这两个事件的例子怎么样?即使我们知道他们是"一次性"事件,我猜测myDelayedInitFuncmyInitObj都不会被清除?

如果其中一些清理,我是否应该myDelayedFunc()设置myInitObj = null;,以尽量减少浪费?

1 个答案:

答案 0 :(得分:1)

是的,您无需清理该参考。如果你担心你的JS代码可能有内存泄漏,你或许应该阅读memory profiling