柯里化

柯里化:函数式编程思想
在计算机科学中,柯里化把接收多个参数的函数转化成接收一个单一的参数(最初的函数第一个参数)的函数,并且返回接收余下参数且返回结果的新函数。
function curry(fn, len) {
    var len = len || fn.length;

    var func = function() {
        var _arg = [].slice.call(arguments, 1);
        reurn function() {
            var newArgs = _arg.concat([].slice.call(arguments));
            return fn.apply(this, newArgs);
        }
    }

    return function() {
        var argLen = arguments.length;
        if(argLen < len) {
            var formatedArr = [fn].concat([].slice.call(arguments));
            return curry(func.apply(this, formatedArr), len - argLen);
        } else {
            return fn.apply(this, arguments);
        }
    }
}

你可能感兴趣的:(柯里化)