- 클로저란 함수와 함수가 선언된 어휘적 환경의 조합. (MDN 정의)

- 함수가 속한 렉시컬스코프를 기억하여 함수가 렉시컬 스코프 밖에서 실행될 때도 그 스코프에 접근할 수 있게 하는 기능

 

function outer() {
  var a = 2;
  function inner() {
    console.log(a);
  }
  return inner;
}
var func = outer();
func(); // 2

위 예제에서 GC(GarbageCollector)가 outer()의 참조를 없앨 것 같지만 내부함수인 inner()가 해당 스코프의 변수인 a를 참조하고 있기 때문에 없애지 않음

따라서 스코프 외부에서 inner()가 실행되도 해당 스코프를 기억하기 때문에 2를 출력

즉, 여기서 클로저는 inner()가 되며 func에 담겨 밖에서도 실행되고 렉시컬 스코프를 기억

 

클로저로 자바스크립트에는 없는 캡슐화라는 개념을 구현할 수 있고 정보 은닉과 캡슐화가 가져다주는 이점들을 얻을 수 있다.

'Coding' 카테고리의 다른 글

브라우저 렌더링 원리  (0) 2023.05.22
Reflow/Repaint 실행 시점  (0) 2023.05.22
주소창에 URL을 입력하면 일어나는 일  (0) 2023.05.22
호이스팅(hoisting)이란?  (0) 2023.05.22
HTTP & HTTPS ( SSL,TLS )  (2) 2020.06.22

+ Recent posts