Variadic curried sum function

前端 未结 16 2026
清酒与你
清酒与你 2020-11-22 06:33

I need a js sum function to work like this:

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10 
etc.

I heard it can\'t be done. But heard

16条回答
  •  甜味超标
    2020-11-22 07:26

    Might be an old question but a little extended answer

    function sum() {
    
        var args = [];
        args.push(...arguments);
    
        function sumOfAllArguments() {
            return args.reduce((prev,items)=>prev + items, 0)
        }
    
        function v() {
            arguments && args.push(...arguments);
            return arguments.length === 0 ? sumOfAllArguments() : v;
        }
    
        v.valueOf = v.toString = sumOfAllArguments;
    
        return v;
    
    }
            
        
    
            console.log(sum(2)(2)(2)()) // 6
            console.log(sum(2)(2)(2).toString()) // 6
            console.log(sum(2)(2)(2).valueOf()) // 6
            console.log(+sum(2)(2)(2)) //6
            console.log(sum(2)(2)(2)) // f 6
    
            console.log(sum(2,2,2)(2,2)(2)) // f 12
            console.log(sum(2)(2,2)(2)()) //  8

提交回复
热议问题