티스토리 뷰

클로저(Closure)

함수 + 함수를 둘러싼 렉시컬 환경(Lexical environment)
내부함수에서 외부함수의 변수 접근 가능 but, 외부함수에서 내부함수 변수는 접근 불가
클로저는 함수가 private한 변수를 가질 수 있게 한다.
  • 렉시컬 환경 : 스크립트 전체, 실행중인 함수, 코드블록 등은 자신만의 렉시컬 환경을 갖는다.

 

 

 

왜 이름이 클로저(Closure : 폐쇄) ???

내부함수의 변수에 대한 메모리할당은 유지하지만
외부에서 직접 볼 수 없게 은닉화 하기 때문
  • 클로저 기법을 사용하는 이유 : 보안때문이라고 생각한다. 아무나 접근할 수 없기 때문에
let a = 1
function outt() {
  console.log(a);


  return function inn() {
    let a = 101;
    console.log(a);
  }

  
}


const getA = outt();
getA(); 

// 출력
// 	1
// 	101
  • 바로 outt의 내부함수인 inn을 불러내진 못한다.  => 폐쇄적이고 정보은닉에 용이, inn함수의 변수 a를 알고 싶다면 outt이라는 함수를 알아야된다.

클로저의 장점

- 정보 은닉하기 좋음

- 정보 보존하기 좋음

- 재사용 용이

 

클로저의 단점

- 클로저를 많이 쓸 경우 메모리의 용량에 과부화가 오고 퍼포먼스 저하 초래

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함