js 柯里化

function curry(func) {
    return function curried(...args) {
        const context = this;
        
        // 如果参数数量足够,直接执行原函数
        if (args.length >= func.length) {
            return func.apply(context, args);
        } else {
            // 参数不足,返回新的函数继续收集参数
            return function(...args2) {
                return curried.apply(context, args.concat(args2));
            };
        }
    };
}
function sum(a,b,c){
    return a+b+c
}

const cur=curry(sum)
console.log(cur(2,3,3))
console.log(cur(2,3)(4))
console.log(cur(2)(3)(5))
console.log(cur(2)(3,6))

 

 

 

posted @ 2025-11-25 11:49  howhy  阅读(4)  评论(0)    收藏  举报