我一直在关注CodeSchool Javascript教程并理解一切,直到我被这个问题困扰:
在名为applyAndEmpty的变量中,构建并存储一个函数 输入一个输入数字和一个函数队列作为参数。运用 一个for循环,将Queue的函数应用于输入数字, 其中每个函数的结果成为下一个函数的输入。 此外,调用函数后,队列应为空。
它提供了这个解决方案:
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));
我已经评论了解决方案的每一行,但我不知道为什么行&#34; queue.shift()(输入);&#34;移位方法使用第二组括号。我查看了Mozilla开发者网络上的方法签名,但他们没有这种用法的示例。我发现这种语法非常奇怪。有人可以在概念上解释为什么这有效以及这里发生了什么?
答案 0 :(得分:2)
shift
方法返回数组中的项,因此queue.shift()
的值是一个函数。调用函数后(input)
为input
作为参数。