2014-07-20 2 views
3

Ma question peut être stupide, alors excusez-moi à l'avance. Mes instructions consistaient à construire une fonction qui itérait sur une file de fonctions. La réponse est en bas .... en dessous du tableau des puzzlers.Je ne comprends pas ma boucle for?

Quelqu'un peut-il expliquer pourquoi la commande dans la boucle for est input = queue.shift() (input);. Je comprends que j'ai dû utiliser la méthode de décalage pour vider la file d'attente. Cet exercice était source de confusion pour moi, mais en créant input = queue.shift() (input); est toujours étrange pour moi. toute explication fondamentale serait grandement appréciée. Si vous avez besoin de plus d'informations, s'il vous plaît faites le moi savoir ..... merci d'avance.

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 applyAndEmpty = function(input, queue) { 
    var length = queue.length; 
    for(var i = 0; i<length; i++){ 
     input = queue.shift()(input); 
    } 
    return input; 
}; 
alert(applyAndEmpty(2, puzzlers)); 
+5

Veuillez réessayer votre question. –

+0

Le commentaire ci-dessus s'applique toujours. – faintsignal

Répondre

5

queue est un tableau, de sorte que queue.shift() prend le premier élément de la matrice (retirer) et le renvoie.

Maintenant, puisque queue est la tenue des fonctions, vous dites ce que la fonction était au début de queue pour fonctionner avec un paramètre de input.

Pour un exemple plus concret, disons que le premier élément de queue était une fonction appelée function1. Vous pouvez penser à queue.shift() comme étant remplacé par function1 une fois qu'il évalue-donc queue.shift()(input); devient function1(input);

+0

'.shift()' supprime également cet élément du tableau. –

+0

Merci Monsieur ... maintenant, il est beaucoup plus logique. – user3843070

Questions connexes