Реализуйте функцию sum (a) (b) (c), используя обратные вызовы в JAVASCRIPT - PullRequest
0 голосов
/ 30 мая 2018

Меня попросили в интервью создать функцию, имеющую подпись, такую ​​как сумма (a) (b) (c), с использованием обратного вызова, способ, которым я решил это, был следующим:

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

но интервьюерискал подход обратного вызова, который я не могу реализовать.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете взять функцию в качестве обратного вызова для требуемой операции, например 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...