@sutaaliya

Как заставить функцию работать без дополнительного вызова?

Есть функция
function test(a) {
  return function(b) {
    if (!isNaN(b)) {
      return test(a + b)
    } 
    return a
  } 
}


В данном виде её можно вызывать так test(1)(3)(10)()

А как сделать чтобы избавится от последнего вызова, вот так - test(1)(3)(10) ?
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Никак. Возвращается же всегда функция, а вызовов возможно произвольное количество. Так что, чтобы получить значение, надо выполнить какое-то дополнительное действие. Правда, в некоторых обстоятельствах, его можно выполнять неявно:

function sum(a) {
  const f = b => sum(a + b);
  f.valueOf = () => a;
  return f;
}


sum(1)(2)(3) + 4 // 10
sum(5) * sum(6) // 30
700 / sum(7) // 100
Math.pow(sum(8), 2) // 64

// но если попутно не выполняется никаких числовых операций, придётся немного поработать руками:
+sum(9)(10) // 19
Number(sum(11)(12)) // 23
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы