클로저
May 28, 2021
»
클로저
함수를 리턴하는 함수
const add = function(x) {
return function(y) { // 리턴값이 함수
return x + y;
}
}
외부 함수의 변수에 접근 가능한 내부 함수
const add = function(x) {
return function(y) {
return x + y; // 외부 함수의 변수인 x에 접근해있음
}
}
데이터를 보존하는 함수
const add = function(x) {
return function(y) {
return x + y;
}
}
const add5 = add(5);
add(7); // 12
add(10); // 15
// 즉 x값이 저장되있으므로 계속 사용되는 중이라는 것!
클로저 모듈 패턴
const counter = () => {
let value = 0;
return {
// 내부 함수 여러개!
increase: () => {
value += 1;
},
decrease: () => {
value -= 1;
},
valueTest: () => value
}
}
const counterTest = counter();
console.log(counterTest); // { increase: f, decrease: f, valueTest: f }
모듈화
여러 개의 counter를 만드는 것이 가능
const counter1 = count();
counter1.increase(); // +
counter1.increase(); // +
counter1.decrease(); // -
counter1.valueTest(); // 1
const counter2 = count();
counter2.decrease(); // -
counter2.decrease(); // -
counter2.decrease(); // -
counter2.valueTest(); // -3
이렇게 하나의 모듈화된 함수를 사용해서 다른 값을 만들어낼 수 있습니다