坏蛋格鲁坏蛋格鲁

【Function】JS 封装通用的柯里化函数

  • JS Function

function curry() {
    var fn = arguments[0];
    var args = Array.prototype.slice.call(arguments, 1);

    if(args.length === fn.length){
        return fn.apply(this, args);
    }

    function _curry(){
        args.push(...arguments);
        if(args.length === fn.length){
            return fn.apply(this, args);
        }
        return _curry;
    }
    return _curry;
}
  • Use Demo

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

//正常调用 add 函数
add(1, 2, 3);

// 通过调用通用柯里化函数来实现调用
console.log(curry(add)(1)(2)(3)); // 6
console.log(curry(add, 1)(2)(3)); // 6
console.log(curry(add, 1, 2, 3)); // 6
console.log(curry(add, 1)(3, 4)); // 8

var addCurrying = curry(add)(2);
console.log(addCurrying(7)(8));   // 17
本原创文章未经允许不得转载 | 当前页面:坏蛋格鲁 » 【Function】JS 封装通用的柯里化函数

评论