자바스크립트 즉시실행함수 메모리 반환

안녕하세요 자바스크립트 메모리 관련하여 궁금한 점이 있어 질문 드립니다.

아래 코드로 예를 들면,

(function(){
    var a = 1;
    function test(){
        console.log('test~~');            
    }
})();

즉시실행함수가 실행되고 난 뒤에 외부 변수에 참조 값을 남기지 않는다면 변수 a 와 함수 test() 는 메모리에서 해제되는건가요??

위 코드의 경우는 맞습니다. 클로저 등으로 따로 참조 값을 남기지 않았으므로 모두 reference count 0 이므로 메모리에서 해제됩니다. 다만 해제(relese)되는 시기는 위 함수가 종료되고 바로가 아니라 자바스크립트 엔진에서 가비지 컬렉션을 할때 입니다.

자바스크립트의 메모리 관리를 이해하는데 많은 도움이 되었던 문서는 다음 MDN 문서입니다. :slight_smile: