함수가 선언될 당시의 스코프를 기억하는 기능

특징

실제 사용 패턴: React 훅

Hook

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은 이미 실행이 끝났는데도

마치 제너릭으로 타입을 입력받아 고정하고 사용하듯, 클로저 패턴은 변수값을 입력받아 고정하고 사용함