Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Вызов функции вида func(x)(x)(x)(x)

Добрый день, недавно наткнулся на функцию, которая вызывается следующим способом.
func(1)(2)(3)(4)(5);
Код самой функции мне недоступен. В чем смысл подобного вызова функции? Пытался искать в интернете, но ничего подобного не нашел.


Ответ

Приведу пример такой функции:
const sum = function(a) { var result = a; // Первый вызов, инициализация const innersum = a => (result+=a, innersum); // Функция возвращает себя же innersum.toString = () => result; // сериализация значения для вывода return innersum; }; console.log(sum(1)(2)(3)(4)); // 10 console.log(sum(1)(2)(3)); // 6 let tmp = sum(2)(3); console.log(tmp); // 5 console.log(tmp(5)); //10 console.log(tmp(10)); //20
Перевод функции(без "новых стандартов языка"):
function sum(a) { var result = a;
function innerSum(a) { result += a; return innerSum; }
innerSum.toString = function() { return result; };
return innerSum; }

Комментариев нет:

Отправить комментарий