출처: 모던 자바스크립트 딥다이브
함수형 프로그래밍 언어(스켈, 리스프, 얼랭, 스칼라,, 등) 에서 사용되는 주요특성 이다.
클로저는 JS 고유의 개념이 이나므로 클로저 정의는 ECMAScript 사양에 없다.
MDN의 클로저설명
→ ‘클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다’
자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의 했는지에 따라
상위 스코프를 결정한다. 이를 렉시컬 스코프(정적스코프)라 한다.
*스코프 체인: 현재렉시컬 환경이 자신의 외부 렉시컬 환경에 대한 참조를 통해 상위 렉시컬 환경과 연결 되는것
렉시컬 환경의 ‘외부 렉시컬 환경에 대한 참조’에 저장할 참조값, 즉 상위 스코프에 대한 참조는 함수
정의가 평가 되는 시점에 함수가 정의된 환경(위치)에 의해 결정된다. 이것이 렉시컬 스코프이다.