카카루1331
아틀리에 카카루!
카카루1331
전체 방문자
오늘
어제
  • 전체 (44)
    • 공학 (41)
      • 정보성 (11)
      • 에세이 (13)
      • 단상 (16)
      • 놀이 (1)
    • 인문 (3)
      • 생각 (3)

공지사항

  • 반갑습니다

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
카카루1331

아틀리에 카카루!

공학/정보성

자바스크립트 클로저(closure)

2020. 8. 19. 22:35

클로저(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
    카카루1331
    카카루1331
    A bitcoin lover

    티스토리툴바