Programing/JavaScript

프로그래밍에서의 Curring 이란? Curring in javascript

리커니 2021. 10. 28. 16:42
반응형

프로그래밍에서의 Curring 이란? Curring in javascript

 

프로그래밍에서 Curring이란 함수가 부분적용으로 로직을 처리할 수 있도록 만들어가는 과정입니다.

매개변수가 항상 비슷한 함수를 호출하는 경우 Curring을 고려해볼 수 있습니다.

 

이론은 이렇고, 간단한 예로 Curring에 대해 이해해 보도록 하겠습니다.

아래와 같이 매개변수 x 와 y 를 전달받아 x + y 를 리턴하는 함수가 있습니다.

 

const sum = function(x, y){
	return x + y;
}

 

만일 x값만 전달이 되었다면 결과는 어떻게 될까요?

 

const sum = function(x, y){
	return x + y;
}

console.log(sum(5));

결과는 당연히 NaN ( Not a Number)가 됩니다.

매개변수로 전달된 5와 정의되지 않은 y의 합을 구하기 때문에 5 + undefined 가 되죠.

 

그럼 이 함수가 매개변수를 하나만 전달하여도 동작하게 하려면 어떻게 해야할까요?

 

const sum = function(x, y){
    if(typeof y === "undefined"){
        return function(y){
             return x+y;
        }
    }
    return x + y;
}

const newSum = sum(5);
console.log(newSum(4));
// console.log(sum(5)(4));

 

우선 y가 전달되지 않았을 경우에는 또다른 익명 함수를 리턴합니다.

그럼 newSum에는 리턴된 익명함수가 들어갈 것이고, newSum 함수를 실행하면 sum함수 실행시에 전달된 x는 closure로 동작을 하여 x+y값을 리턴하게 됩니다.

이처럼 x+y라는 결과를 얻기 위해 함수를 만드는 과정을 커링이라고 합니다.

 

클로저의 개념에 대해서는 아래의 Link를 참고하세요.

 

Link : https://aljjabaegi.tistory.com/293

 

javascript closure 자바스크립트 클로저의 개념 쉽게 이해. 클로저란?

javascript closure 자바스크립트 클로저의 개념 쉽게 이해. 클로저란? 자바스크립트 하면 빠지지 않는 것 중에 하나가 클로저(Closure) 입니다. 하지만 이것을 사용하지 않는다고 해서 개발을 못하진

aljjabaegi.tistory.com

 

참고 : JavaScript Patterns - 스토얀 스테파노프

반응형