我不明白我的for循环

I don't understand my for loop?

本文关键字:for 循环 我的 明白      更新时间:2023-09-26

我的问题可能很傻,所以提前道歉。我的指令是构建一个函数,它在一个函数队列上迭代。答案在下面....在puzzlers数组下面。

谁能解释一下为什么for循环中的命令是input = queue.shift()(input); ?我明白我必须使用shift方法清空队列。这个练习一开始就让我感到困惑,但是创建input = queue.shift()(input);对我来说仍然很陌生。任何基本的解释将是非常感激的。如果你需要更多的信息,请告诉我.....提前谢谢你。

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));

queue是一个数组,因此queue.shift()从数组中取出第一项并返回它。

现在,由于queue是保存函数,您告诉queue开始时的函数以input为参数运行。

举一个更具体的例子,假设queue中的第一项是一个名为function1的函数。您可以认为queue.shift()一旦求值就会被function1取代,因此queue.shift()(input);变成了function1(input);