학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 17 · 실전 면접 답변

클로저는 무엇이며 어떤 상태를 유지하나요?

이렇게 답해 보세요 (핵심 답변)

클로저는 함수와 그 함수가 선언될 당시의 렉시컬 환경에 대한 참조가 함께 묶인 구조를 말합니다. 이를 통해 바깥 함수의 실행이 이미 끝났더라도, 반환된 내부 함수나 콜백이 바깥 함수의 변수 바인딩을 계속 읽고 변경할 수 있습니다. 실무에서는 외부에서 직접 접근할 수 없는 비공개 상태(예: 카운터, 캐시, 설정값)를 안전하게 캡슐화할 때 자주 활용하며, 불필요하게 큰 객체를 오래 참조하지 않도록 수명만 주의해 관리하면 됩니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. 클로저는 생성 시점의 값을 복사해 두는 것이 아니라 변수 바인딩 자체를 참조하므로, 같은 환경을 공유하는 함수들은 변경된 최신 상태를 함께 봅니다.
  2. 바깥 함수를 새로 호출할 때마다 독립된 렉시컬 환경이 만들어지므로 인스턴스처럼 별도의 상태를 유지할 수 있습니다.

면접에서 자주 하는 실수

클로저를 쓰면 무조건 메모리 누수가 발생한다고 오해하기 쉬운데, 실제로는 더 이상 쓰지 않는 참조를 정리하지 못했을 때만 누수가 됩니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 17번을 바탕으로 질문과 답변을 새로 정리했습니다.

← JavaScript