본문 바로가기
JavaScript

Closure(클로저)

by nacjji 2023. 7. 31.
Closure
  • 함수가 실행되었을 때의 렉시컬 환경
function outer() {
    const x = 10
    const inner = function () {
        console.log(x)
    }

    return inner
}

const closure = outer()

closure()
  • 외부함수 outer 에서 선언한 변수 x와, x를 출력하는 함수 내부함수 inner
  • outer 함수는 inner 함수를 반환하고 life-cycle 종료
  • 변수 closure 에 outer 함수를 할당하고 실행
  • 10 출력

 

outer 함수는 변수 x와 내부함수 inner 를 선언하고, inner 함수를 반환하고 수명을 다한다. 
하지만 outer 함수를 closure 변수에 할당하고 실행하니 이미 수명을 다한 outer 함수에서 선언한 x 변수에 접근이 가능하다. 
이처럼 외부 함수가 수명을 다해 사라진 상태에서, 내부 함수를 호출할 때 외부함수의 변수에 접근이 가능한 상태를 Closure 라고 한다.