클로저

»

클로저

함수를 리턴하는 함수

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

이렇게 하나의 모듈화된 함수를 사용해서 다른 값을 만들어낼 수 있습니다