使用javascript模块模式安全吗?

使用javascript模块模式安全吗?,javascript,memory-leaks,Javascript,Memory Leaks,我已经使用javascript模块模式有一段时间了 我向一位同事展示了一个模块模式的示例。他说下面的代码会导致内存泄漏 var test = (function(){ var events = { // my functions go here } return { // return something } }()); 他说,因为events变量是一个对象,我没有为它设置null,所以即使我稍后为test设置null,它也可能导致内存泄漏

我已经使用javascript模块模式有一段时间了

我向一位同事展示了一个模块模式的示例。他说下面的代码会导致内存泄漏

var test = (function(){

   var events = {
      // my functions go here
   }

   return {
     // return something
   }

}());
他说,因为events变量是一个对象,我没有为它设置null,所以即使我稍后为test设置null,它也可能导致内存泄漏

据我所知,上面的代码片段还可以,因为我没有传递事件


我需要建议

我认为你的代码很好。由于循环引用(
foo
保留
element
,而
element
保留
foo
,因此它们永远不会被垃圾收集),当您有对DOM元素的引用时,闭包中会发生内存泄漏:

我对这个信念的来源是


但其他人可能知道另一个问题……

@moon-为什么太担心了?这种代码在两次会议之间执行的频率是多少?将丢失多少字节?然后,你必须考虑不同的浏览器,它们将互操作并运行你的JavaScript。
简言之,把精力集中到其他地方,你就会得到更好的回报。

//嗯……我之所以使用这个代码示例,并不是因为我在使用那个代码。这只是我在帖子中提到的一个例子。@moon-我只是认为你的努力在其他地方会更好。(顺便说一句,名字来自Enid Btyton——遥远之树的人们)//我很欣赏并理解你在这里的意图,但内存泄漏并不是我想跳过的事情;把我的精力集中在别的地方,留下一个已知的问题,这是我谦卑的生活中的一个问题opinion@moon-内存泄漏有多大?几个字节?也许最好看看服务器端,并提出一些更好的cavar?//正如我提到的……这只是……一个示例代码片段。假设上面的代码导致内存泄漏。如果我在我所有的项目上继续使用它,那将是一个问题。再说一遍,我明白你的意思……但我在这里是个学习者。
function foo(element, a, b) {
    element.onlick = function(a, b) { /* uses a and b */ };
}