클로저(closure)란?
함수 객체가 외부 함수에 대한 활성 객체(activation object)의 참조를 갖는 방식을 일컫는다.
활성객체(activation object)는 무엇인가요?
활성객체는 숨겨진 데이터 구조다.
함수가 호출되면 활성객체(activation object)가 생성된다.
아래는 활성객체가 갖는 정보의 일부다.
- 함수 객체에 대한 참조
- 함수 매개변수
- 함수 변수
- 함수가 메소드로 호출 되었을 경우 사용되는 this 참조
다시 함수객체에 대하여
한편 앞서 언급한 함수객체는 두 가지 속성을 갖는다.
- 함수 실행 코드에 대한 참조
- 활성 객체에 대한 참조
눈여겨 볼 것은 함수 객체의 두 번째 속성이다.
함수는 중첩될 수 있다.
자바스크립트의 함수는 중첩될 수 있다.
그리고 중첩 함수의 객체는 자신을 생성한 외부 함수의 활성 객체에 대한 참조를 갖는다.
다시말해 활성 객체에 대한 참조를 이용해 중첩 함수는 중첩 함수를 만든 함수의 변수에 접근할 수 있다!
샘플 코드
See the Pen VwaKWeP by Kim Je (@kim-je) on CodePen.
References
<자바스크립트는 왜 그모양일까?(How Javascript Works)> - 더글러스 크락포드(Douglas crockford)
'공학 > 정보성' 카테고리의 다른 글
코딩 컨벤션: 예시로 알아보자! (0) | 2021.09.05 |
---|---|
node 프로젝트 라이브러리 버전 관리법 (0) | 2021.01.24 |
오라클 끄기 / 켜기 (0) | 2020.08.16 |
데이터베이스 정규화 (0) | 2020.08.16 |
C언어 포인터 (0) | 2020.08.16 |