1. 클로저의 정의 및 의미

<aside> 💡

외부 함수보다 중첩 함수가 더 오래 유지되는 경우, 중첩 함수는 이미 생명 주기가 종료한 외부 함수의 변수를 참조할 수 있다. 이러한 중첩 함수를 클로저라고 부른다.

</aside>

<aside> 💡

상태를 안전하게 변경하고 유지하기 위해 사용한다. 즉 상태가 의도치 않게 변경되지 않도록 상태를 안전하게 은닉하고 특정 함수에게만 상태 변경을 허용하기 위해 사용한다.

</aside>

1.1 클로저의 예시

const x = 1
// 1번
function outer() { // --- 외부 함수
  const x = 10
  const inner = function () { console.log(x) } // --- 중첩 함수 2번
  return inner
}

// outer함수를 호출하면 중첩 함수 inner를 반환한다.
// outer함수의 실행 컨텍스트는 실행 컨텍스트 스택에서 팝되어 제거
const innerFunc = outer() // 3번
innerFunc() // 4번, 10

image.png