Tech/Javascript

[Javascript] Curring(커링) 이란?

lonnie(동현) 2021. 9. 2. 14:01

커링(Currying) 이란?

  • 커링은 인자를 여러개 받는 함수를 분리하여, 인자를 하나씩만 받는 함수의 체인으로 만드는 방법이다.
  • 함수형 프로그래밍 기법 중 하나로 함수를 재사용하는데 유용하게 쓰일 수 있는 기법이다.
  • 자바스크립트 내부에는 커링이 내장되어 있지 않지만 자바스크립트로도 구현이 가능하다.

예시

  • 적용 전에
const testAction = (initialState, action) => 
	produce(initialState, draft => { 
		const { type } = action; 
		
		switch (type) { 
			case TEST_ACTION1: 
				draft.test1 = 'test1'; 
				break; 
			case TEST_ACTION2: 
				draft.test2 = 'test2'; 
				break; 
			default: 
			break;
	} 
});
  • 적용 후
const testAction = produce((draft, action) => { 
const { type } = action; 

switch (type) { 
	case TEST_ACTION1: 
		draft.test1 = 'test1'; 
		break; 
	case TEST_ACTION2: 
		draft.test2 = 'test2'; 
		break; 
	default: break; 
	} 
}, initialState);

주의할 점

  • 주의 할게 있다면 커링 함수에서는 인자의 순서가 매우 중요하다.
  • 외부 함수 즉 가장 먼저 받는 인자일 수록 변하지 않아야 하고, 내부 함수 즉 가장 나중에 받는 인자일 수록 변할 가능성이 높다. 이런 것들을 생각해가며 설계를 해야한다.
728x90
반응형