외부 함수의 변수에 접근할 수 있는 내부 함수"를 클로저 함수라고 한다.
클로저 함수의 첫 번째 특징
은 클로저 함수는 함수를 리턴하는 함수로 함수를 리턴하는 함수가 클로저의 형태를 만든다.클로저 함수의 두 번째 특징
은 내부 함수는 외부 함수에 선언된 변수에 접근 가능하다.클로저
는 외부 함수의 실행이 끝나더라도 외부 함수 내 변수가 메모리 상에 저장된다.)함수 재사용성을 극대화하여, 함수 하나를 완전히 독립적인 부품 형태로 분리하는 것
클로저는 모듈화에 유리하다(클로저를 통해 데이터와 메서드를 같이 묶어서 다룰 수 있기 때문)
변수 value는 직접 수정이 불가능하며 리턴하는 객체가 제공하는 메서드를 통해서만 조작이 가능하다. 이렇게 캡슐화를 함으로써 변수 value를 makeCounter 함수로 보존하여 전역 변수로 인한 side effect를 방지할 수 있다.