클로저가 무엇인가요?

0

기술면접 - JS

목록 보기
5/18

클로저가 무엇인가요?

클로저(Closure)는 자바스크립트의 중요한 개념으로, 함수와 해당 함수가 선언된 렉시컬 환경(Lexical Environment)의 조합을 말합니다. 클로저는 함수가 선언될 때 생성되며, 함수 내부에서 선언된 변수들과 그 변수들의 상태를 기억합니다.

클로저의 특징

클로저는 다음과 같은 특징을 갖습니다:

  1. 외부 함수 내의 변수 접근: 클로저는 자신을 포함하는 외부 함수의 변수들에 접근할 수 있습니다. 외부 함수의 실행이 종료된 후에도 클로저를 통해 변수에 접근할 수 있습니다.

  2. 변수의 보존: 외부 함수의 변수는 클로저가 생성된 시점의 값을 보존합니다. 외부 함수가 반환되고 실행 컨텍스트가 종료되어도 클로저를 통해 이전 값에 접근할 수 있습니다.

클로저의 활용 방법

클로저는 다양한 상황에서 활용될 수 있습니다:

  1. 정보 은닉: 클로저를 사용하여 외부에서 접근할 수 없는 private 변수를 만들 수 있습니다. 이를 통해 모듈화된 코드를 작성하고 변수의 누출을 방지할 수 있습니다.

  2. 콜백 함수: 비동기적인 작업이나 이벤트 처리에 클로저를 활용하여 콜백 함수에 필요한 데이터를 전달할 수 있습니다. 클로저는 해당 콜백 함수가 실행될 때까지 변수 값을 유지합니다.

  3. 반복문과 함수: 반복문 내부에서 비동기 작업이나 타이머를 사용할 때, 클로저를 활용하여 반복마다 독립적인 변수 범위를 유지할 수 있습니다.

클로저 사용시 주의할 점

클로저를 사용할 때에는 주의해야 할 점도 있습니다:

  1. 메모리 누수: 클로저는 자신이 참조하는 외부 변수를 계속 유지하므로, 사용하지 않는 클로저가 계속해서 메모리를 차지할 수 있습니다. 사용이 완료된 클로저는 해당 변수에 대한 참조를 해제하여 메모리 누수를 방지해야 합니다.

  2. 성능 상의 이슈: 클로저는 함수와 그에 대한 렉시컬 환경을 기억하므로, 메모리 사용량과 실행 속도에 영향을 줄 수 있습니다. 따라서 필요한 경우에만 적절히 클로저를 사용하는 것이 좋습니다.

클로저는 자바스크립트의 강력한 기능으로, 코드의 유연성과 모듈화를 지원하며, 변수를 보호하고 상태를 유지할 수 있게 해줍니다. 그러나 적절한 사용과 관리가 필요하며, 메모리 관리와 성능에 주의해야 합니다.

profile
지치지 않는 백엔드 개발자 김성주입니다 :)

0개의 댓글