我一直在使用javascript模块模式。
我向我的一位同事展示了一个模块模式的例子。他说以下代码可能会导致内存泄漏。
var test = (function(){
var events = {
// my functions go here
}
return {
// return something
}
}());
他说,因为事件变量是一个对象而且我没有为它设置null,所以即使我稍后设置 null for test ,也会导致内存泄漏。
据我所知,上面的代码片段没问题,因为我没有传递事件。
我需要建议!
答案 0 :(得分:3)
我认为您的代码很好。由于循环引用(foo
保留在element
上,而element
保留在foo
,因此当您引用DOM元素时,闭包中会发生内存泄漏,所以它们永远不会被垃圾收集):
function foo(element, a, b) {
element.onlick = function(a, b) { /* uses a and b */ };
}
我相信这一信念的来源是here
但其他人可能知道另一个问题......
答案 1 :(得分:0)
@moon - 为什么要担心太多?这些代码多久经常在会议之间执行?会丢失多少字节?然后你必须考虑各种浏览器,它们可以互操作并运行你的Javascript。
简而言之 - 将你的努力集中在别处 - 然后你会获得更好的奖励。