JavaScript
Closure(클로저)
nacjji
2023. 7. 31. 17:34
반응형
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 라고 한다.