我'有人在接受采访时被要求创建一个具有签名的函数,例如sum(a)(b)(c)使用回调,我解决它的方式是:
function sum(a){
return function(b){
return function(c){
return a+b+c;
}
}
}
但是面试官正在寻找我无法实施的回调方法。
提前致谢。
答案 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));