자바스크립트의 (다른 컴퓨터 언어와) 다른 특성
MDN 클로저 개념
"함수와 함수가 선언된 어휘적(lexical) 환경의 조합을 말한다. 이 환경은 클로저가 생성된 시점의 유효 범위 내에 있는 모든 지역 변수로 구성된다."
자바스크립트는 함수가 호출되는 환경과 별개로, 기존에 선언되어있더 환경, 어휘적 환경 을 기준으로 변수를 조회하려고 한다.
"외부 함수의 변수에 접근할 수 있는 내부 함수" 를 클로저 함수로 부르는 이유이다.
const add = (x,y) => x + y;
add(5,7); // 12
const adder = x => y => x + y;
adder(5)(7) ; // 12
리턴값이 함수
const adder = x => y => x + y;
adder(5)(7); //12
typeof adder(5) // 'function'
adder(5) // y=> x+y;
클로저 함수는 위와 비슷한 모양을 갖고 있습니다. 이를 통해 알아볼 수 있는 첫 번째 특징은, 클로저 함수는 "함수를 리턴하는 함수" 라는 점입니다. 함수를 리턴하는 함수가 클로저의 형태를 만듭니다.
어휘적 환경을 메모리에 저장하기 때문에 가능한 일입니다
이렇게 사용가능!
재사용성을 극대화하여, 함수 하나를 완전히 독립적인 부품 형태로 분리하는 것을 모듈화라고 합니다.
클로저를 통해 데이터와 메서드를 같이 묶어서 다룰 수 있습니다. 즉, 클로저는 모듈화에 유리합니다.