实现sum()求sum(1)(4)(6)(),sum(1,2,3)(12)(1,2,3)()

就是闭包和递归结合一下就OK
f(1)() // 1

f(1)(2)(3)() // 6

f(1)(2)(3)(4)() // 10

function sum(){
     
    var num=0;
    Object.values(arguments).map(i=>{
     return num+=i})
    return function su(){
     
        if(arguments[0]){
     
            Object.values(arguments).map(i=>{
     return num+=i})
            return su
        }else{
     
            return num;
        }
    }
}
console.log(sum(1)(4)(6)())
console.log(sum(1,2,3)(11)())
console.log(sum(1,2,3)(12)(1,2,3)())
console.log(sum(1,2,3)())


你可能感兴趣的:(前端面经,js,javascript)