[javascript] 자바스크립트의 클로저(Closure) 개념과 활용 방법
자바스크립트에서 클로저는 매우 강력하고 유용한 개념입니다. 클로저를 제대로 이해하고 활용한다면 변수의 유효 범위(scoping)와 메모리 관리에 대한 이해가 높아지고, 함수형 프로그래밍에서의 기술적인 장점을 활용할 수 있습니다.
클로저란 무엇인가요?
클로저는 다른 함수의 내부 함수이며, 외부 함수의 변수에 접근할 수 있는 함수입니다. 이는 외부 함수가 실행을 마쳤더라도 외부 함수의 변수에 접근할 수 있다는 의미입니다.
예를 들어, 다음과 같은 코드에서 내부 함수 innerFunc
은 외부 함수 outerFunc
의 변수 x
에 접근할 수 있습니다.
function outerFunc() {
let x = 10;
function innerFunc() {
console.log(x);
}
return innerFunc;
}
const newFunc = outerFunc();
newFunc(); // 10
클로저의 활용
클로저는 주로 콜백 함수, 비동기 처리, 정보 은폐 등 다양한 상황에서 활용됩니다.
예를 들어, 다음은 클로저를 사용하여 간단한 카운터를 구현한 예제입니다.
function createCounter() {
let count = 0;
function increment() {
count++;
console.log(count);
}
return increment;
}
const counter1 = createCounter();
counter1(); // 1
counter1(); // 2
const counter2 = createCounter();
counter2(); // 1
위의 예제에서 createCounter
함수는 클로저를 반환하고, 이 클로저를 실행함으로써 count
변수가 유지되면서 카운터가 증가합니다.
마무리
클로저는 자바스크립트에서 매우 강력한 기능으로, 함수형 프로그래밍과 비동기 처리 등 다양한 분야에서 활용됩니다. 클로저의 개념을 확실하게 이해하고, 적절히 활용하는 것은 개발자로서 중요한 기술 중 하나입니다. 코드를 작성할 때 클로저를 적극적으로 활용해보고, 그 효과에 대해 경험해 보시기를 권장드립니다.
참고 자료: