@Itvanya

Как понять данный код JavaScript с циклом и методом shift?

Задание:In a variable called applyAndEmpty, build and store a function that takes in a single number and any Queue of functions as inputs and then applies the Queue’s functions in order to the input number, where the results of each function become the next function’s input. Additionally, the queue should be empty following your application. + нужно обязательно выполнить циклом, а не методом .map().
Код :
var puzzlers = [
    function ( a ) { return 8*a - 10; },
    function ( a ) { return (a-3) * (a-3) * (a-3); },
    function ( a ) { return a * a + 4; },
    function ( a ) { return a % 5; }
];
var start = 2;
var applyAndEmpty = function( input, queue ) {

  var length = queue.length;
  for(var i = 0; i<length; i++){
    input = queue.shift()(input);
  }
  return input;
};
alert(applyAndEmpty(start, puzzlers));

Что не понятно : Не понимаю момента, когда мы аргументу input присваиваем queue.shift()(input); - какой смысл этого действия? Почему после queue.shift() в скобках стоит (input) и как это влияет на процесс?
Заранее благодарен
  • Вопрос задан
  • 2482 просмотра
Решения вопроса 1
@vasIvas
Метод shift возвращает удаленный объект. И получается, что input - это параметры, которые Вы передаете в удаленный-возвращенный метод.
А влияет это только на конечное значение свойства input.
Грубо говоря - в возврате из первого метода, к input === 0 прибавили 1
затем это свойство, уже со значением 1 передали во второй метод, где к нему прибавили ещё один.
В третий метод свойство input передали, когда оно имело значение 2. И так далее...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы