Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “这是怎么回事?”;。shift();此代码学校示例中使用的方法?_Javascript_Function - Fatal编程技术网

Javascript “这是怎么回事?”;。shift();此代码学校示例中使用的方法?

Javascript “这是怎么回事?”;。shift();此代码学校示例中使用的方法?,javascript,function,Javascript,Function,我一直遵循CodeSchool Javascript教程并理解所有内容,直到我被这个问题难住为止: 在名为applyAndEmpty的变量中,构建并存储一个函数 将输入编号和函数队列作为参数。使用 对于循环,将队列函数应用于输入编号, 其中每个函数的结果成为下一个函数的输入。 此外,调用函数后,队列应为空 它提供了以下解决方案: var puzzlers = [ function (a) { return 8*a - 10; }, function (a) { return (a

我一直遵循CodeSchool Javascript教程并理解所有内容,直到我被这个问题难住为止:

在名为applyAndEmpty的变量中,构建并存储一个函数 将输入编号和函数队列作为参数。使用 对于循环,将队列函数应用于输入编号, 其中每个函数的结果成为下一个函数的输入。 此外,调用函数后,队列应为空

它提供了以下解决方案:

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
作为参数。

谢谢!我在写了几分钟后就发现了这一点。