Показать сообщение отдельно
  #1 (permalink)  
Старый 16.02.2015, 21:22
Аватар для ivanWantsToKnow
Интересующийся
Отправить личное сообщение для ivanWantsToKnow Посмотреть профиль Найти все сообщения от ivanWantsToKnow
 
Регистрация: 29.01.2015
Сообщений: 15

Объединить несколько функций в одну
Есть такая задача - реализовать функцию compose, которая принимает аргументами любое количество функций, и возвращает функцию, которая при вызове вызовет все функции, которые compose получила аргументом.
Я сделал следующее:
function compose() {
	var arr = [];
	for(var i = 0; i < arguments.length; i++) {
		arr.push(arguments[i]);
	}
	return function() {
		var calledFunction = [];
		for(var j = 0; i < arr.length; i++) {
			calledFunction.push(arr[i]());
			return calledFunction;
		}	
	}
}

поясняю: поскольку наша функция может принимать любое количество аргументов, то целесообразно использовать объект arguments, но поскольку он не массив по своей сути, а array-like, то я с создаю пустой массив и далее с помощью цикла for прохожусь по элементам arguments и записываю их в новый массив из всех переданных нам аргументов.
Далее я возвращаю функцию (как по условию) в которой проделываю тот же трюк, но теперь в новый массив я записываю вызванные функции . В итоге код не отрабатывает... в чем проблема? помогите разобраться...
Ответить с цитированием