理解简单的柯里化


//使用闭包 和递归 必须要满足curry传递的函数条件 才可以进行执行 比如 他传递了 a,b,c 比如要三个参数满足了才会执行这个函数
// 写柯里化的时候不能给函数传递默认值 
function curry(fn, length) {   //  2  1 
    length = length || fn.length; 
    var slice = Array.prototype.slice;
    return function() { 
        if (arguments.length < length) {  //就是如果是一个函数他的参数肯定是 === arguments 如果在有一个函数传递进去 肯定进这个if 里面
            var combined = [fn].concat(slice.call(arguments));
            return curry(sub_curry.apply(this, combined), length - arguments.length);
        } else {
            return fn.apply(this, arguments);
        }
    };
}
var fn = curry(function(a , b, c) {
    return [a, b, c];
});

// 写柯里化的时候 不能给 函数 有默认值
var fn = curry(function(a  = 1, b, c) { // fn.length ==== 0
    return [a, b, c];
});


console.log(fn("a")('b')('c')); // ['a','b','c']
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容