학습 목표
- 클로저 함수의 정의와 특징에 대해서 이해할 수 있다.
- 클로저가 갖는 스코프 범위를 이해할 수 있다.
- 클로저를 이용해 유용하게 쓰이는 몇 가지 패턴을 이해할 수 있다.
클로저
함수와 그 함수가 접근할 수 있는 변수의 조합
클로저 예시
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
과 같은 함수를 커링 함수라고 부르기도 함모듈 패턴