Loading...
simeon.georgiev avatar simeon.georgiev 62 Точки

[Homework] Advanced JS - Functions and function expressions - Problem{5} Function Composition

Привет! Моля за малко концептуална помощ за тази задача- идеята ми е ясна, но не разбирам как се обработват параметри, подадени в следния вид function(anotherFunction, yetAnotherFunction)(5). Какви трябва да са параметрите на функцията compose() в такъв случай? Как се обработват по принцип параметри, подадени по този начин?

1
JavaScript Advanced
Filkolev avatar Filkolev 4482 Точки

Самата функция compose() приема два аргумента - двете функции, които се композират. Вече за резултантната функция трябва да ползваш arguments, понеже не е ясно колко параметъра ще бъдат подадени.

2
simeon.georgiev avatar simeon.georgiev 62 Точки

Добре, а съвсем примерно как може да се оформи това? Понеже ако извикам compose(function, anotherFunction)(5) ми дава error, както се и очаква.

0
Filkolev avatar Filkolev 4482 Точки

compose() ще връща функция, която ще прави нещо с arguments. Какво прави, ами прилага двете подадени функции последователно - първо пуска аргументите на едната функция, а после подава резултата на другата функция. Крайният резултат се връща.

Мисля, че ключовото е, че compose() връща функция, оттам нататък не е особено сложно да се измисли какво да се прави.

2
f31m6d avatar f31m6d 4 Точки

Лично аз ползвах ето ТОВА.

Ето и горе долу какво трябва да представлява кода:

var compose = function() {
    var functions = arguments;
    return function() {
        var args = arguments;
        for (var i = functions.length-1; i>= 0; i--) {
            args = [functions[i].apply(this, args)];
        }
        return args[0];
    };
};

 

Подробности в линка по горе.

2
09/03/2015 20:09:50
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.