클로저
클로저는 함수와 그 함수 주변의 상태의 주소 조합
클로저는 함수와 그 함수가 접근할 수 있는 변수의 조합
클로저가 중요한 이유
클로저의 함수는 어디에서 호출되느냐와 무관하게 선언된 함수 주변 환경에 따라 접근할 수 있는 변수가 정해진다.
실제 클로저를 사용할 때는 outerFn, innerFn처럼 함수가 함수를 리턴하는 패턴을 자주 사용한다. outerFn을 외부 함수, innerFn을 내부 함수라고 통칭한다.
function outerFn() {
const outerFnVar = 'outer 함수 내의 변수';
const innerFn = function() {
return 'innderFn은 ' + outerFnVar + '에 접근할 수 있습니다.';
}
return innerFn;
}
데이터를 보존하는 함수
클로저를 활용하면 클로저의 함수 내에 데이터를 보존해 두고 사용할 수 있다.
클로저를 활용하면, 함수 내부에 선언한 변수에 접근할 수 있고, 매개변수에도 접근할 수 있다.
기존 함수 내부에서 새로운 함수를 리턴하면 클로저로서 활용할 수 있다. 즉, 리턴한 새로운 함수의 클로저에 데이터가 보존된다.
여러 전달인자를 가진 함수를 함수를 연속적으로 리턴하는 함수로 변경하는 행위
커링은 전체 프로세스의 일정 부분까지만 실행하는 경우 유용하다.
커링은 함수의 일부만 호출하거나, 일부 프로세스가 완료된 상태를 저장하기에 용이하다.
Javascript에 class 키워드가 없던 시절 모듈 패턴을 구현하기 위해서 클로저를 사용했다.