[javascript] 클로저의 동작 원리
클로저는 자바스크립트에서 매우 중요한 개념이며, 자바스크립트 함수형 프로그래밍에서 핵심적인 역할을 합니다. 클로저는 내부 함수가 외부 함수의 변수와 맥락에 접근할 수 있는 것을 의미합니다. 자바스크립트에서 클로저 동작의 원리는 다음과 같습니다.
1. 클로저의 생성
함수가 외부 함수 내부에서 정의되고, 그 함수가 외부 함수의 변수를 참조할 때 클로저가 생성됩니다. 예를 들어:
function outerFunction() {
let count = 0;
function innerFunction() {
count++;
console.log(count);
}
return innerFunction;
}
const increment = outerFunction();
increment(); // 출력: 1
increment(); // 출력: 2
위 예제에서 innerFunction
은 count
변수를 참조하고 있으므로, outerFunction
의 실행 컨텍스트가 사라진 이후에도 count
변수에 접근 가능합니다. 이러한 클로저의 동작으로 인해 innerFunction
은 count
변수에 여전히 접근할 수 있고, count
변수는 계속 유지됩니다.
2. 외부 변수의 변경
클로저를 통해 내부 함수는 외부 함수의 변수를 읽고 변경할 수 있습니다.
function outerFunction() {
let name = 'Alice';
function innerFunction() {
name = 'Bob';
console.log(name);
}
return innerFunction;
}
const changeName = outerFunction();
changeName(); // 출력: "Bob"
위 예제에서 innerFunction
은 name
변수를 변경할 수 있습니다. 클로저는 name
변수가 외부 함수 내부에서 생성된 내부 함수에 의해 참조될 때 만들어집니다.
클로저를 사용하면 캡슐화와 정보 은닉을 구현하는 데 도움이 되며, 이는 자바스크립트에서 모듈 패턴을 구현할 때 사용될 수 있습니다. 클로저는 또한 이벤트 핸들러, 콜백 함수, 프라이빗 변수 등을 다루는 데 유용합니다.
클로저의 동작 원리를 잘 이해하면 코드를 더 유연하게 작성할 수 있고, 정확한 상황에서 적절하게 활용할 수 있습니다. 클로저는 자바스크립트에서 강력하고 유용한 패턴을 만들어내는 핵심적인 요소입니다.