기술면접
클로저(Closure)
고래고래00
2024. 10. 2. 17:56
클로저는 함수와 그 함수가 선언된 렉시컬 환경의 조합
함수가 자신이 생성될 때의 환경(스코프)을 기억하여 나중에도 그 환경에 접근할 수 있는 특성
실제로 클로저는 다음과 같은 상황에서 유용하게 사용
- 데이터 프라이버시 구현 : 변수를 private하게 관리할 수 있습니다.
- 상태 유지: 함수가 호출될 때마다 이전 상태를 기억할 수 있습니다.
- 부분 적용 함수 생성: 함수의 일부 인자를 미리 고정할 수 있습니다.
다만, 클로저를 사용할 때는 메모리 관리에 주의, 클로저가 참조하는 환경이 메모리에 계속 유지되기 때문에 메모리 누수 발생 가능성
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 변수를 계속 기억하고 접근