var GlobalObject = (function(){

    var arr1 = [];
    var arr2 = [];
    var arr3 = [];
    var arr4 = [];

        return {

         }

})();



现在如何在整个应用程序中调用GlobalObject.arr1?
当我按下并弹出时,它会保持其参考和价值吗?
这会导致任何内存泄漏

最佳答案

arr1仅在GlobalObject函数的范围内定义。如果要全局访问它,则需要让GlobalObject函数返回对其的引用。阅读functional scope in javascript可以更好地理解这一点。当前,您的函数返回一个空对象。您想做这样的事情:

...
return {
   "array1": arr1,
   "array2": arr2,
   "array3": arr3,
   "array4": arr4
};


(尽管您可以通过不返回这些数组来维护它们的私密性)

GlobalObject将保留arr1的引用和值,直到您手动取消引用(将其设置为null)为止。 Javascript's garbage collector仅删除不再需要的对象。

您当前的代码显示没有内存泄漏。注意circular references and closures

08-17 08:22