[프론트엔드 면접]클로저(closure)란?

else·2023년 9월 11일
0

CS

목록 보기
10/10

클로저란?

  • 함수와 그 함수가 선언됐을 때의 렉시컬(Lexical)환경에 따른 상호 관계
  • 렉시컬 환경은 클로저가 생성된 위치에 따라 결정
  • environmentouterEnviornmentReference에 의해 스코프가 결정되고 스코프 체인이 결정된다
  • 외부 함수의 실행컨텍스트가 끝났는데도 불구하고 내부 함수가 살아남아 정보를 저장하고 있는것

어떻게?

  • [[enviornment]]
    • 모든 함수는 [[enviornment]] 라는 숨김 프로퍼티를 가지고있음
    • 여기엔 함수가 만들어진 렉시컬 환경에 대한 참조가 저장되어있음
    • 이는 단 한번 생성되며 변하지 않음
  • 중첩 함수를 할당 했을 때, 그것의 참조 환경(enviornment)이 저장되어 있기 때문에 자바스크립트의 가비지 컬렉터가 컬렉팅 대상에서 제외시킴
profile
피아노 -> 개발자

0개의 댓글