首页 > 如何实现一个简单的Currying闭包函数?

如何实现一个简单的Currying闭包函数?

function add(a, b) {
  return a + b;
}

var curried = curry(add);
console.log(  curried(1)(2)  ); // 3

给你一个简单的:

var curry = function(func) {
    var len = func.length;

    var getCurry = function(params) {
        return function() {
            var _this = this;
            var next = params.concat(Array.prototype.slice.call(arguments));
            if (len - next.length === 0) {
                return func.apply(_this, next);
            }
            return getCurry(next);
        };
    };

    return getCurry([]);
};

function add(a, b) {
    return a + b;
}

var curried = curry(add);
console.log(curried(1)(2)); // 3

有空可是玩玩: fe-interview


var curryMaker = function (func) {
    var slice = Array.prototype.slice,
        storedArgs = slice.call(arguments, 1);

    return function(newArg) {
        storedArgs = storedArgs.concat(slice.apply(arguments));
        return func.apply(this, storedArgs);
    };
};

function add(a, b) {
    return a + b;
}


var c = curryMaker(add, 1)(2)

console.log(c);
【热门文章】
【热门文章】