Сообщение от dima***
|
Есть две функции.Нужно получить третью функцию сложив первую и вторую.
|
высший класс оперирования терминами функционального программирования
ну держи "оператор" сложения функций
/*
При передаче списка функций вернёт функцию, которая
последовательно применит переданные аргументы к переданному списку,
применив оператор арифметической суммы к результату функции списка
и вернёт результат.
*/
function plus (/* function1, function2, ... functionN */) {
var functions = [].slice.call(arguments), m = functions.length;
return function () {
for (var i = 0, acuum = 0; i < m; i++) {
acuum += functions[i].apply(window, arguments);
}
return acuum;
};
}
ну и пример использования :
function plus (/* function1, function2, ... functionN */) {
var functions = [].slice.call(arguments), m = functions.length;
return function () {
for (var i = 0, acuum = 0; i < m; i++) {
acuum += functions[i].apply(window, arguments);
}
return acuum;
};
}
function a(x,y){
var z=x+y;
return z;
}
function b(x,y){
var z=x+y;
return z;
}
var a_plus_b = plus(a, b);
alert( a_plus_b(2, 3) );