Я попросил в интервью создать функцию, имеющую подпись, такую как sum (a) (b) (c) с использованием обратного вызова, так, как я решил, что это так:
function sum(a){
return function(b){
return function(c){
return a+b+c;
}
}
}
но интервьюер искал подход обратного вызова, который я не могу реализовать.
Заранее спасибо.
Вы можете использовать функцию callback для требуемой операции, например 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));