使用JAVASCRIPT中的回调实现函数sum(a)(b)(c)

时间:2018-05-30 11:37:21

标签: javascript callback

我'有人在接受采访时被要求创建一个具有签名的函数,例如sum(a)(b)(c)使用回调,我解决它的方式是:

function sum(a){
   return function(b){
      return function(c){
         return a+b+c;  
      }
   }
}

但是面试官正在寻找我无法实施的回调方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你可以把一个函数作为所需操作的回调函数,比如sum,它需要两个操作数和一个数组用于值和一个返回自身的函数。

要获得最终值,您需要实现一个toString方法,该方法返回最终值。

function sum(a, b) {
    return a + b;
}

function partial(fn) {
    function f(v) {
         stack.push(v);
         if (stack.length === fn.length) {
             stack = [fn(...stack)];
         }
         return f;
    }
    f.toString = function () { return stack[0]; };
    
    var stack = [];
    return f;
}

console.log(partial(sum)(3)(4)(5));