curry 메소드는 함수와 인자를 결합해 새로운 함수를 만듭니다.
var combine = { 'curry': function(fn){ var args = nativeSlice.call(arguments, 1); return function(){ return fn.apply(this, args.concat(nativeSlice.call(arguments))); }; } };
다음의 사용예를 들어보겠습니다.
combine.curry(function(){},[1,2])([3,4]);
위의 코드는 curry를 사용한 것인데 최종적으로 function(){}에 파라미터로 [1,2,3,4]가 전달됩니다. 즉 전달된 함수에 인자를 결합해 새로운 함수를 만들어 냅니다.
코드를 보게되면 nativeSlice는 Array.prototype.slice입니다. 전달된 [1,2]를 slice 하게 되면 [1,2]가 args에 할당됩니다. 그리고 클로져 함수에서는 [3,4]를 arguments로 받아 slice 후, args와 concat합니다. 즉 [1,2,3,4]가 function(){}에 전달됩니다. 즉 전달된 파라미터 함수에 인자를 결합하여 새로운 함수를 반환되게 합니다.
감사합니다.