Closure 클로저
"외부 함수의 변수에 접근할 수 있는 내부 함수"
'함수를 리턴하는 함수'는 클로저 패턴의 일반적인 특징, 정의와 혼동하지 말 것!
eg.
function outerFn(){
let outerVar = 'outer';
console.log{outerVar);
function innerFn(){
let innerVar = 'inner';
console.log(innerVar);
}
return innerFn;
}
let globalVar = 'global';
let innerFn = outerFn();
innerFn();
클로저 함수(innerFn()) 안에서는 지역 변수(innerVar), 외부 함수의 변수(outerVar), 전역 변수(globalVar)의 접근이 전부 가능합니다
클로저 함수를 활용하는 예
adder(2)(3); //5
커링을 사용하는 이유 : x 값을 고정해두고 재사용할 수 있다
eg.
let add100 = adder(100);
add100(2); //102
let divMaker=htmlMaker('div');
divMaker('안녕하세요') //"
let counter1=makeCounter();
counter1.increment();
counter1.increment();
counter1.getValue(); //2
let counter2=makeCounter();
counter2.increment();
counter2.decrement();
counter2.increment();
counter2.getValue(); //1