函数柯里化主要是实现如下意义:

add(1)(2)(3) = 1+2+3 ;

方法如下:

// 柯里化的实现
function curry(){
    var fn = arguments[0];
    var arr = Array.prototype.slice.call(arguments,1);
    return function _format(){
        // 本处的 arguments 和上一层函数的 arguments 不一样
        var args = Array.prototype.slice.call(arguments);
        args = args.concat(arr);
        if(args.length<fn.length){
            // 若当前所拥有的参数个数未达到绑定 fn 所需要的个数,那么就迭代执行 curry,使得传递参数入 args
            return curry.apply(null,[fn].concat(args))
        }
        return fn.apply(null,args)
    }
    
}
var add = function(x,y,z){
    return x+y+z;
}
// 测试
var a = curry(add, 1)
console.log(a(2)(3)) //6
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

神烦大眼怪 微信支付

微信支付

神烦大眼怪 支付宝

支付宝

神烦大眼怪 贝宝

贝宝