프론트엔드 개발 · 중급
JavaScript의 클로저(Closure)란 무엇이며, 실제 사용 예시를 들어주세요.
힌트 · 함수가 선언될 때의 렉시컬 환경을 기억하는 것을 설명해보세요.
렉시컬 스코프함수 스코프자유 변수데이터 은닉콜백 함수
모범답안
클로저는 JavaScript에서 중요한 개념 중 하나입니다. 간단히 말하면, 함수가 자신이 선언될 때의 렉시컬 환경(Lexical Environment)을 기억하는 현상을 말합니다. 렉시컬 환경은 함수가 속한 스코프를 의미하며, 클로저를 통해 함수는 자신이 속한 스코프의 변수에 접근할 수 있습니다.
좀 더 자세히 설명하자면, 내부 함수가 외부 함수의 변수를 참조할 때 클로저가 생성됩니다. 이때 내부 함수는 외부 함수의 실행이 끝난 후에도 외부 함수의 변수(자유 변수)에 접근하고 사용할 수 있습니다.
실제 사용 예시로는, 카운터 함수를 만들 때 클로저를 활용할 수 있습니다. 외부 함수에서 카운트 변수를 선언하고, 내부 함수에서 이 변수를 증가시키는 방식으로 구현할 수 있습니다. 이렇게 하면 카운트 변수는 외부에서 직접 접근할 수 없도록 숨겨지고, 내부 함수를 통해서만 값을 변경할 수 있게 됩니다. 데이터 은닉과 캡슐화에 유용하게 사용될 수 있습니다. 콜백 함수 내부에서도 클로저를 활용하여 특정 상태를 유지하는 데 사용될 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.