Добрый день, недавно наткнулся на функцию, которая вызывается следующим способом.
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;
}
Комментариев нет:
Отправить комментарий