看到一到面试题,一直搞不懂用的那些知识点,求大佬帮下忙

实现这样一个函数

foo(1,2) // 3
foo(2,3)(4,5) // 14
foo(2)(2)(2)(8) //14

阅读 1.2k
2 个回答
function foo(...args){
    let sum=0;
    for(const value of args){
        sum+=value;
    }
    function result(...args1){
        return foo(sum,...args1);
    }
    result.valueOf=function(){return sum};
    return result;
}
foo(1,2)+0
foo(2,3)(4,5)+0
foo(2)(2)(2)(8)+0
// ES5
function add(){
    var args = [].slice.apply(arguments)
    
    function result() {
        return add.apply(null, args.concat([].slice.apply(arguments)))
    }
    
    result.valueOf = function() {
        return args.reduce(function(sum, x) {
            return sum + x
        }, 0)
    }
    
    return result
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题