我有一个在其中创建测试元素的函数。返回函数之前,我将取消对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 = []
来解决编译器。