[javascript] 클로저의 활용
클로저란 무엇인가요?
클로저는 함수가 선언될 당시의 환경을 기억하고, 이 환경에 대한 접근 권한을 제공하는 개념입니다. 클로저를 이해하면, 함수 내부의 변수를 보호하거나 상태를 유지할 수 있으며, 함수를 반환하는 함수를 작성할 수도 있습니다.
클로저를 사용한 상태 보존
클로저를 사용하면 함수 내부의 변수를 외부에서 접근할 수 없도록 보호할 수 있습니다. 다음은 클로저를 활용한 카운터 함수의 예시입니다.
function createCounter() {
let count = 0;
return function() {
return ++count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
위 코드에서 createCounter
함수는 카운터 함수를 반환합니다. 이 카운터 함수는 외부에서 count
변수에 접근할 수 없지만, 클로저를 통해 이 변수에 접근하여 카운트를 증가시킬 수 있습니다.
클로저를 사용한 정보 은폐
클로저를 사용하면 특정 정보를 외부로 노출시키지 않고 숨길 수 있습니다. 예를 들어, 사용자의 개인 정보를 보호하기 위해 클로저를 사용할 수 있습니다.
function createUser(name, age) {
let _name = name;
let _age = age;
return {
getInfo: function() {
return `${_name} is ${_age} years old`;
}
};
}
const user = createUser('Alice', 25);
console.log(user.getInfo()); // Alice is 25 years old
console.log(_name); // ReferenceError: _name is not defined
createUser
함수는 사용자 정보를 가지고 있는 객체를 반환합니다. 이 객체에는 클로저를 통해 접근할 수 있는 getInfo
메서드가 포함되어 있어, 외부에서는 _name
과 _age
에 접근할 수 없습니다.
결론
클로저는 자바스크립트에서 강력한 기능을 제공하며, 상태 보존과 정보 은폐 등의 다양한 상황에서 유용하게 활용될 수 있습니다. 클로저를 올바르게 활용하면 보다 안전하고 모듈화된 코드를 작성할 수 있습니다.
참고 문헌: MDN Web Docs - Closures