Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сложение функций. (https://javascript.ru/forum/misc/34989-slozhenie-funkcijj.html)

dima*** 27.01.2013 11:58

Сложение функций.
 
Есть две функции.Нужно получить третью функцию сложив первую и вторую.

<script>
function a(x,y){
z=x+y;
return z;
}

function b(x,y){
z=x+y;
return z;
}

//(function c=function a+function b;)???
<script>

danik.js 27.01.2013 12:12

Функции складывать нельзя. Можно только складывать результаты функций.

function c(x,y) {
    return a(x,y) + b(x,y);
}

melky 27.01.2013 12:14

Цитата:

Сообщение от dima***
Есть две функции.Нужно получить третью функцию сложив первую и вторую.

высший класс оперирования терминами функционального программирования :D

ну держи "оператор" сложения функций
/*
При передаче списка функций вернёт функцию, которая
последовательно применит переданные аргументы к переданному списку,
применив оператор арифметической суммы к результату функции списка 
и вернёт результат.
*/
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) );

megaupload 27.01.2013 15:16

melky,
распарси код функций положи один над другим и захерач новую функцию))

vi_khan 21.01.2017 20:17

Помогите и мне сложить функции пожалуйста)
 
<script type="text/javascript">
function changeText(){
var rezultat1 = 0;
var odin = document.getElementById('odin').value;
var spisok = document.getElementById('spisok').options[document.getElementById('spisok').selectedIndex].value;
rezultat1 = parseFloat(odin);
rezultat1 *= parseFloat(spisok);
document.getElementById('rezultat1').innerHTML = rezultat1;
}
function changeText1(){
var rezultat2 = 0;
var dva = document.getElementById('dva').value;
var spisok1 = document.getElementById('spisok1').options[document.getElementById('spisok1').selectedIndex].value;
rezultat2 = parseFloat(dva);
rezultat2 *= parseFloat(spisok1);
document.getElementById('rezultat2').innerHTML = rezultat2;
}

</script>

<form onsubmit="return false;">
<select id="spisok" onchange="changeText()">
<option value="23"> Тарталетки с грибами </option>
<option value="35"> Тарталетки с паштетом </option>
<option value="177"> Ассорти рыбное </option>
<option value="110"> Ассорти мясное </option>
<option value="98"> Ассорти овощное </option>
<option value="50"> Закуска к водочке </option>
<option value="40"> Сельдь, соленая с луком </option>
<option value="115"> Бутерброд с икрой лососевой </option>
<option value="51"> Бутерброд с рыбой </option>
<option value="36"> Бутерброд со шпротами </option>
<option value="27"> Помидоры по -гречески </option>
<option value="120"> Грузди со сметанной </option>
<option value="60"> Канапе с сыром и виноградом </option>
<option value="80"> Помидоры фаршированные грибами </option>
<option value="40"> Сало соленное с хреном </option>
<option value="179"> Блинчики с икрой лососевой </option>
<option value="106"> Холодец </option>
<option value="52"> Тарталетки с икрой </option>
<option value="35"> Закуска русская </option>
</select>
<input id="odin" type="number" value="1" oninput="changeText()"> = <output id="rezultat1">1</output> тг

<select id="spisok1" onchange="changeText1()">
<option value="23"> Тарталетки с грибами </option>
<option value="35"> Тарталетки с паштетом </option>
<option value="177"> Ассорти рыбное </option>
<option value="110"> Ассорти мясное </option>
<option value="98"> Ассорти овощное </option>
<option value="50"> Закуска к водочке </option>
<option value="40"> Сельдь, соленая с луком </option>
<option value="115"> Бутерброд с икрой лососевой </option>
<option value="51"> Бутерброд с рыбой </option>
<option value="36"> Бутерброд со шпротами </option>
<option value="27"> Помидоры по -гречески </option>
<option value="120"> Грузди со сметанной </option>
<option value="60"> Канапе с сыром и виноградом </option>
<option value="80"> Помидоры фаршированные грибами </option>
<option value="40"> Сало соленное с хреном </option>
<option value="179"> Блинчики с икрой лососевой </option>
<option value="106"> Холодец </option>
<option value="52"> Тарталетки с икрой </option>
<option value="35"> Закуска русская </option>
</select>
<input id="dva" type="number" value="1" oninput="changeText()"> = <output id="rezultat2">1</output> тг
</form>


Часовой пояс GMT +3, время: 18:52.