我有一个在其中创建测试元素的函数。返回函数之前,我将取消对test元素的引用,以帮助防止内存泄漏。但是closure compiler删除了它认为不需要的行b / c(在两种模式下)。我可以添加某种comment来防止该行被删除吗?

function isExample (testElem) {
 var bool;
 testElem = testElem || document.createElement('div');

 // Do stuff in here to determine `bool`
 // ...

 // Then nullify the reference
 testElem = null; // The compiler removes this line. How do I make it keep it?

 return bool;
}

最佳答案

不需要。垃圾收集器将执行相同的操作,因此Google Closure Compiler会将其删除。

我不知道有任何垃圾收集器会因此而泄漏内存,如果有的话,JS会有很大的问题。

请记住,JS具有函数作用域,这意味着一旦执行退出函数,函数中定义的任何变量都将被垃圾回收。

这是垃圾收集器的基本功能之一,如果一个js引擎在此上泄漏内存,那将是非常糟糕的。

对于旧的IE泄漏,您可以尝试通过使其无效后添加testElement = []来解决编译器。

09-29 20:39