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 버그를 제외하고는 "메모리 누수"에 문제가 없습니다. –
이 예제 함수는 * nothing *을 수행하므로 누수되는 데이터가 없습니다. 가비지 수집은 * 구성된 * 함수가 여전히 데이터를 참조하는 것에 달려 있습니다. – Bergi