기술면접

클로저(Closure)

고래고래00 2024. 10. 2. 17:56

클로저는 함수와 그 함수가 선언된 렉시컬 환경의 조합

함수가 자신이 생성될 때의 환경(스코프)을 기억하여 나중에도 그 환경에 접근할 수 있는 특성

실제로 클로저는 다음과 같은 상황에서 유용하게 사용

  1. 데이터 프라이버시 구현 : 변수를 private하게 관리할 수 있습니다.
  2. 상태 유지: 함수가 호출될 때마다 이전 상태를 기억할 수 있습니다.
  3. 부분 적용 함수 생성: 함수의 일부 인자를 미리 고정할 수 있습니다.

다만, 클로저를 사용할 때는 메모리 관리에 주의, 클로저가 참조하는 환경이 메모리에 계속 유지되기 때문에 메모리 누수 발생 가능성

 

function makeCounter() {
    let count = 0;  // 외부 함수의 변수

    return function() {
        return count++;  // 내부 함수에서 외부 변수 접근
    };
}

const counter = makeCounter();
console.log(counter());  // 0
console.log(counter());  // 1
console.log(counter());  // 2

이 예제에서 반환된 함수는 외부 함수의 count 변수를 계속 기억하고 접근