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 라고 한다.
'JavaScript' 카테고리의 다른 글
도메인(Domain) (0) | 2022.12.10 |
---|---|
객체지향 프로그래밍(OOP, Object Oriented Programming) (1) | 2022.12.10 |
객체지향(Object-Oriented) (0) | 2022.12.10 |
JavaScript, 비동기함수 와 await(async/await) (0) | 2022.11.25 |
JavaScript, 콜백함수와 Promise (1) | 2022.11.25 |