TIL.231019 클로저

안은지·2023년 10월 18일
0
post-custom-banner

"클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합"

외부 함수보다 중접 함수가 더 오래 유지되는 경우, 중첩 함수는 이미 생명 주기가 종료한 외부 함수의 변수를 (여전히) 참조할 수 있다. ← 이 개념에서 중첩 함수가 바로 클로저다.

  • outer 함수를 호출하면 중첩 함수 inner를 반환(return)
  • outer 함수의 실행 컨텍스트는 실행 컨텍스트 스탭에서 팝되어 제거된다
    (역할을 다 했으니깐)
  • inner 함수는 런타임에 평가된다.
  • inner함수가 innerFunc에 전달되었는데, 이는 outer 함수의 렉시컬환경을 (여전히) 참조하고 있다.
  • 즉, outer 함수의 실행 컨텍스트는 실행 컨텍스트 스택에서 제거되지만 outer 함수의 렉시컬 환경까지 소멸하는 것은 아니다
  1. 어떻게 가능할까요? (feat. 똑똑한 가비지 컬렉터)
    1. 안쓰는 것만 가져가요! outer 함수의 렉시컬 환경은 참조하는 곳이 있으니 놔둘게욥!

encapsulation(캡슐화)
1. 프로퍼티메서드하나로 묶는 것

  • 프로퍼티 : 객체의 상태(state)
  • 메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작(behavior)
  • 객체의 특정 프로퍼티나 메서드를 감출 목적으로 사용
    가지고 있는 정보가 예민,민감해서 **정보 은닉(information hiding)**이 필요한 경우
  • 객체의 상태 변경을 방지함으로써 정보 보호
  • 객체 간의 의존성(결합도 - coupling)을 낮춤
post-custom-banner

0개의 댓글