함수가 선언될 당시의 스코프를 기억하는 기능
private 변수를 만드는 것이 가능실제 사용 패턴: React 훅
function outerFunction(x) {
function innerFunction(y) {
// 내부 함수에서 외부 함수의 변수에 접근
return x + y;
}
return innerFunction;
}
const addFive = outerFunction(5); // 훅의 사용 패턴
console.log(addFive(3)); // 8
// innerFunction이 x=5를 기억
outerFunction은 함수인 innerFunction을 반환했고, 이게 addFive에 할당
addFive() = innerFunction()이 됨
근데 outerFunction에서 x = 5로 전달 받았던 걸 계속 기억하고 있는 거임. outerFunction은 이미 실행이 끝났는데도
마치 제너릭으로 타입을 입력받아 고정하고 사용하듯, 클로저 패턴은 변수값을 입력받아 고정하고 사용함