理解簡單的柯里化


//使用閉包 和遞歸 必須要滿足curry傳遞的函數(shù)條件 才可以進行執(zhí)行 比如 他傳遞了 a,b,c 比如要三個參數(shù)滿足了才會執(zhí)行這個函數(shù)
// 寫柯里化的時候不能給函數(shù)傳遞默認值 
function curry(fn, length) {   //  2  1 
    length = length || fn.length; 
    var slice = Array.prototype.slice;
    return function() { 
        if (arguments.length < length) {  //就是如果是一個函數(shù)他的參數(shù)肯定是 === arguments 如果在有一個函數(shù)傳遞進去 肯定進這個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];
});

// 寫柯里化的時候 不能給 函數(shù) 有默認值
var fn = curry(function(a  = 1, b, c) { // fn.length ==== 0
    return [a, b, c];
});


console.log(fn("a")('b')('c')); // ['a','b','c']
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容