0
var globalObject = {    
    prop1
    prop2
}

我有一个全局对象,我在我的闭包中引用它。这会导致任何内存泄漏。

(function(){
      var a;

      function inner1(arg){
        a = arg;
        globalObject .prop1 = dosomething;
      }

      function inner2(){
        globalObject .prop1 = add more properties to prop1
        globalObject .prop2 = dosomething;
        alert(a);
      }

    })();

之后我打电话给我inner2()的服务电话。

4

1 回答 1

0

您正在将有权访问闭包范围的函数分配给全局对象。因此,闭包调用的变量环境不会被垃圾收集,直到函数不再通过全局对象访问——这通常会持续到你的应用程序被卸载。

这不一定是内存泄漏。您似乎有充分的理由通过全局对象使函数可用,并且只要它们可以访问,它们就会工作。到那时,闭包内部的变量当然需要保存在内存中。

于 2013-01-20T13:32:56.763 回答