自动柯里化函数

function foo(x,y,z){
            console.log(x+y+z)
        }
        function webKingCurrying(fn){
            function curryFn(...args){  //--->这里的...args是剩余参数
                //两类操作:
                //1.第一类操作:继续返回一个新的函数,继续接受参数
                //2.第二类操作:直接返回fn的函数
                if (args.length>= fn.length){
                    //执行第二类操作
                    //fn(...args)  //这里的...args是展开运算符--->相当于把数组中所有的数都展示出来
                    return fn(...args)
                }else {
                    return function (...newArgs){
                       return  curryFn(...args.concat((newArgs)))
                    }
                }
            }
            return curryFn
        }
        //对其他的函数进行柯里化
        var fooCurry = webKingCurrying(foo)
        fooCurry(10)(20)(30)
        fooCurry(55)(12)(16)
        //sum函数
        function sum(num1,num2){
            return num1+num2
        }
        //sum函数柯里化
        var sumCurry = webKingCurrying(sum)
        console.log(sumCurry(10)(20))
posted @ 2024-10-21 21:03  韩德才  阅读(3)  评论(0编辑  收藏  举报