클로저는 자신이 생성될 때의 환경(Lexical environment)을 기억하는 함수다
클로저에 의해 참조되는 외부함수의 변수 즉 outerFunc 함수의 변수 x를 자유변수(Free variable)라고 부른다. 클로저라는 이름은 자유변수에 함수가 닫혀있다(closed)라는 의미로 의역하면 자유변수에 엮여있는 함수라는 뜻이다.
외부함수가 이미 반환되었어도 외부함수 내의 변수는 이를 필요로 하는 내부함수가 하나 이상 존재하는 경우 계속 유지된다. 이때 내부함수가 외부함수에 있는 변수의 복사본이 아니라 실제 변수에 접근한다는 것에 주의하여야 한다.
클로저의 활용
1. 상태 유지
-현재 상태를 기억하고 변경된 최신 상태를 유지
2. 전역 변수의 사용 억제
3. 정보의 은닉
참조 : https://poiemaweb.com/js-closure
https://hyunseob.github.io/2016/08/30/javascript-closure/