패스잇
프론트엔드 개발 · 심화

JavaScript의 WeakMap과 WeakSet의 특징과 사용 사례를 설명해주세요.

힌트 · 약한 참조와 가비지 컬렉션의 관계를 설명해보세요.

가비지 컬렉션약한 참조메모리 누수 방지은닉화데이터 연결

모범답안

WeakMap과 WeakSet은 JavaScript에서 객체를 약하게 참조하는 컬렉션입니다. "약한 참조"라는 것은, WeakMap이나 WeakSet에 저장된 객체가 가비지 컬렉션 대상이 되는 것을 막지 않는다는 의미입니다.

일반적인 Map이나 Set은 객체를 강하게 참조하기 때문에, 해당 객체를 더 이상 사용하지 않더라도 메모리에 남아있게 됩니다. 반면 WeakMap과 WeakSet은 객체가 다른 곳에서 참조되지 않으면 가비지 컬렉터에 의해 회수될 수 있습니다.

주요 사용 사례는 다음과 같습니다. 첫째, 메모리 누수 방지입니다. DOM 요소와 관련된 데이터를 저장할 때, 요소가 제거되면 WeakMap에 저장된 데이터도 자동으로 제거되어 메모리 누수를 막을 수 있습니다. 둘째, 데이터 은닉화입니다. 객체에 대한 비공개 데이터를 연결할 때, 외부에서 직접 접근할 수 없도록 WeakMap을 사용할 수 있습니다.

예를 들어, 특정 DOM 요소에 이벤트 리스너를 연결하고, 해당 요소에 대한 추가 정보를 WeakMap에 저장할 수 있습니다. 요소가 제거되면 WeakMap의 해당 데이터도 함께 제거되므로 메모리 관리에 유용합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JavaScript 면접 질문

← JavaScript 면접 질문 전체 보기