질문 17 · 실전 면접 답변
클로저는 무엇이며 어떤 상태를 유지하나요?
이렇게 답해 보세요 (핵심 답변)
클로저는 함수와 그 함수가 선언될 당시의 렉시컬 환경에 대한 참조가 함께 묶인 구조를 말합니다. 이를 통해 바깥 함수의 실행이 이미 끝났더라도, 반환된 내부 함수나 콜백이 바깥 함수의 변수 바인딩을 계속 읽고 변경할 수 있습니다. 실무에서는 외부에서 직접 접근할 수 없는 비공개 상태(예: 카운터, 캐시, 설정값)를 안전하게 캡슐화할 때 자주 활용하며, 불필요하게 큰 객체를 오래 참조하지 않도록 수명만 주의해 관리하면 됩니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 클로저는 생성 시점의 값을 복사해 두는 것이 아니라 변수 바인딩 자체를 참조하므로, 같은 환경을 공유하는 함수들은 변경된 최신 상태를 함께 봅니다.
- 바깥 함수를 새로 호출할 때마다 독립된 렉시컬 환경이 만들어지므로 인스턴스처럼 별도의 상태를 유지할 수 있습니다.
면접에서 자주 하는 실수
클로저를 쓰면 무조건 메모리 누수가 발생한다고 오해하기 쉬운데, 실제로는 더 이상 쓰지 않는 참조를 정리하지 못했을 때만 누수가 됩니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 17번을 바탕으로 질문과 답변을 새로 정리했습니다.