JavaScript가 가비지 수집을 지원합니까? 예를 들어변수가 범위를 벗어날 때 JavaScript 가비지 수집
, 내가 사용하는 경우 :
function sayHello (name){
var myName = name;
alert(myName);
}
내가 삭제 "삭제"를 사용할 필요가 수행 myName
변수 또는 그냥 무시?
JavaScript가 가비지 수집을 지원합니까? 예를 들어변수가 범위를 벗어날 때 JavaScript 가비지 수집
, 내가 사용하는 경우 :
function sayHello (name){
var myName = name;
alert(myName);
}
내가 삭제 "삭제"를 사용할 필요가 수행 myName
변수 또는 그냥 무시?
ignore - sayHello 함수가 완료된 후 myName이 범위를 벗어나 gc'ed가됩니다.
no.
delete
은 메모리 관리가 아닌 개체에서 속성을 제거하는 데 사용됩니다.
아무 것도 할 필요가 없습니다.이 변수를 삭제할 필요가 없습니다.
참조 : http://www.codingforums.com/archive/index.php/t-157637.html다른 사람이 언급 한 바와 같이이, 함수가이 범위는 단지 함수 내에서이다, 그래서 GC가 다음을 정리할 수있는 당신의 변수가 범위를 벗어날 후 종료 할 때.
그러나 변수가 함수 외부의 어떤 것으로 참조 될 수 있습니다. 그런 다음 변수가 여전히 참조되어 있으므로 잠시 gc되지 않습니다.
당신은 자바 스크립트 범위 지정에 읽을 할 수 있습니다 : http://www.webdotdev.com/nvd/content/view/1340/
당신이 처리하려고하는 문제가있을 수 있습니다 당신은 메모리 누수를 만들 수 있습니다 폐쇄,와, 내가 언급했던 관련된 문제입니다 : http://www.jibbering.com/faq/faq_notes/closures.html
자바 스크립트는 가비지 수집을 지원합니다. 이 경우 함수 내에서 변수를 명시 적으로 선언하기 때문에 함수가 종료되고 그 후 언젠가 수집 될 때 범위를 벗어나고 (2) delete
의 대상이 될 수 없습니다 (아래 링크 된 참조 별) . 전역 범위에서 그들을두고하는 암시 적 변수를 선언하는 경우 delete
이 유용 할 수 있습니다
function foo()
{
x = "foo"; /* x is in global scope */
delete x;
}
, 그렇게 항상 var
를 사용하여 암시 적 변수를 정의하는 나쁜 관행 그리고 당신은하지 않습니다 약 delete
에 신경 써야합니다.
자세한 내용은 다음을 참조하십시오 https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator
확실히 아니, CTO : http://www.codingforums.com/archive/index.php/t-157637.html –
/하고 입양을 다시 태그하십시오 :이 아무것도에 대한이 없습니다 최적화와 함께. "JavaScript 변수 범위"를 제안하십시오 – kdgregory
JS GC에 대한이 질문도 참조하십시오 - http://stackoverflow.com/questions/864516/what-is-javascript-garbage-collection – Kobi