网上有很多关于sum(1)(2)(3),sum(1,2,3)之类的面试题要求输出相同的结果6并要求可以满足扩展,即有多个参数时也能符合题设的要求,所以自己写了部分例子可以大概满足这些面试题的要求
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
    //案例1
            //sum(2,3)和sum(2)(3)均能输出outPut5,这个问题较为简单,只要返回一个函数即可,本例中使用了es6语法
        // function sum(x=0,y){
        //     if([...arguments][1]==undefined){
        //         let befor = [...arguments][0];
        //         return function suum(afte){
        //             let sum2 = befor+afte;
        //             console.log(`outPut${sum2}`);
        //         }
        //     }
        //     else{
        //             let sum1 = x+y;
        //             console.log(`outPut${sum1}`);        
        //         }
        //     }   
        // 
        // sum(2,3); 输出outPut5
        // sum(2)(3);输出outPut5
        //案例二、add(2,3,4...)和add(2)(3)(4)...都输出相同结果的解决方案
        
                // function add(x) {
                //     var sum = x;
                //     var tmp = function (y) {
                //     sum = sum + y;
                //     return tmp;
                // };
                // tmp.toString = function () {
                //     return sum;
                // };
                //     return tmp;
                // }
                // console.log(add(1)(2)(3));  //6
                // console.log(add(1)(2)(3)(4));   //10
                // console.log(add(1)(2)(3)(4)(5));//15
                // console.log(add(1)(2)(3)(4)(5)(6));//21
    //扩展案例3、此函数使用es6实现输入sum(),sum(2,3,4...)多个值相加,还有sum(2)(3)(4)...等多个数值分别相加的值相等,此案例也是最完整的解决方案
        function sum(...args){
                if([...args].length==1){
                    let sum2 = [...args][0];
                    var suum = function (y){
                        sum2 +=y;
                        console.log(`output  ${sum2}`)
                        return suum; 
                    }
                    suum.valueOf = function(){
                        return sum2;
                    }
                        return suum; 
                }
                else{
                    let sum1 = 0;
                    for(var i = 0;i<[...args].length;i++){
                        sum1 += [...args][i];        
                    }
                    console.log(`outPut1  ${sum1}`);
                }  
                }   
            sum(); //outPut1  0
            sum(2,3,4);//outPut1  9
            sum(2)(3)(4)(5);//outPut1  5//outPut1  9//outPut1  14
            //每加一次就会输出一次Sum。如果不想输出三次则可以在函数中加一个valueOf方法或者toString方法。然后将Summ函数中的console去掉。
            //然后console.log(sum(2)(3)(4)(5));即可
        //感兴趣的朋友可以直接复制粘贴看效果即可
    </script>
</body>
</html>