학습 목표
- 클로저 함수의 정의와 특징에 대해서 이해할 수 있다.
- 클로저가 갖는 스코프 범위를 이해할 수 있다.
- 클로저를 이용해 유용하게 쓰이는 몇 가지 패턴을 이해할 수 있다.
클로저
함수와 그 함수가 접근할 수 있는 변수의 조합
클로저 예시
const globalVar = '전역 변수';
function outerFn() {
const outerFnVar = 'outer 함수 내의 변수';
const innerFn = function() {
return 'innerFn은 ' + outerFnVar + '와 ' + globalVar + '에 접근할 수 있습니다.';
}
return innerFn;
}
outerFn에서는 변수 globalVar에 접근할 수 있음innerFn에서는 변수 globalVar와 함수 outerFn 내부의 outerFnVar에 접근할 수 있음outerFn과 outerFn에서 접근할 수 있는 globalVarinnerFn과 innerFn에서 접근할 수 있는 globalVar, outerFnVar클로저가 중요한 이유!!!!!!
클로저의 특징
데이터를 보존하는 함수
커링
function sum(a, b) {
return a + b;
}
function currySum(a) {
return function(b) {
return a + b;
};
}
console.log(sum(10, 20) === currySum(10)(20)) // true
sum 함수는 두 전달인자(10, 20)를 덧셈하는 함수고, currySum은 첫 번째 전달인자 10을 리턴하는 함수로 전달sum과 currySum이 같은 값을 리턴하기 위해서는 currySum 함수에서 리턴한 함수에 두 번째 전달인자 20을 전달하여 호출currySum과 같은 함수를 커링 함수라고 부르기도 함모듈 패턴