Javascript “这是怎么回事?”;。shift();此代码学校示例中使用的方法?
我一直遵循CodeSchool Javascript教程并理解所有内容,直到我被这个问题难住为止: 在名为applyAndEmpty的变量中,构建并存储一个函数 将输入编号和函数队列作为参数。使用 对于循环,将队列函数应用于输入编号, 其中每个函数的结果成为下一个函数的输入。 此外,调用函数后,队列应为空 它提供了以下解决方案:Javascript “这是怎么回事?”;。shift();此代码学校示例中使用的方法?,javascript,function,Javascript,Function,我一直遵循CodeSchool Javascript教程并理解所有内容,直到我被这个问题难住为止: 在名为applyAndEmpty的变量中,构建并存储一个函数 将输入编号和函数队列作为参数。使用 对于循环,将队列函数应用于输入编号, 其中每个函数的结果成为下一个函数的输入。 此外,调用函数后,队列应为空 它提供了以下解决方案: var puzzlers = [ function (a) { return 8*a - 10; }, function (a) { return (a
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));
var谜题=[
函数(a){返回8*a-10;},
函数(a){返回(a-3)*(a-3)*(a-3);},
函数(a){返回a*a+4;},
函数(a){返回一个%5;}
];
var启动=2;
var applyAndEmpty=函数(输入,队列){
var length=queue.length;
对于(变量i=0;i
我已经注释了解决方案的每一行,但我不知道为什么行“queue.shift()(input);”中的shift方法使用了第二组括号。我查看了Mozilla开发者网络上的方法签名,他们没有这种用法的示例。我觉得这个语法很奇怪。有人能从概念上解释一下为什么会这样,这里发生了什么 方法
shift
从数组返回一个项,因此queue.shift()的值是一个函数。(input)
调用函数后,将input
作为参数。谢谢!我在写了几分钟后就发现了这一点。