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