@sutaaliya

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

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


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

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

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


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

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

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

Войти через центр авторизации
Похожие вопросы
23 сент. 2020, в 17:55
1000 руб./в час
23 сент. 2020, в 17:39
500 руб./за проект
23 сент. 2020, в 17:38
25000 руб./за проект