0
(function(){
var a;
function inner1(arg){
a = arg;
}
function inner2(){
alert(a);
}
})();
这会导致我的应用程序中发生内存泄漏,因为我在另外两个内部函数之外声明变量a。内部函数中的内存泄漏
(function(){
var a;
function inner1(arg){
a = arg;
}
function inner2(){
alert(a);
}
})();
这会导致我的应用程序中发生内存泄漏,因为我在另外两个内部函数之外声明变量a。内部函数中的内存泄漏
不,因为您已经在匿名函数闭包中声明了该变量。
您可以通过执行以下操作来证明这一点。
(function(){
var a;
function inner1(arg){
a = arg;
}
function inner2(){
alert(a);
}
})();
alert(a)
这被称为[词法作用域](http://stackoverflow.com/q/1047454/1331430),又名JS的范围链,的语言中最常见的问题之一。所有JS实现都有一个GC(垃圾回收器),通过从内存中删除不再引用的对象来处理内存问题。除了当你有循环引用,移除仍然附加处理程序的元素和一些IE错误时,你通常不会遇到“内存泄漏”的问题。 –
由于这个示例函数没有*没有*,所以不会有泄漏数据。垃圾收集取决于*组成*功能仍然引用您的数据 – Bergi