所以我期待在一块是困惑我的代码,尽管读的解释或两个:拆开函数表达式 - 用几行挣扎/参数
下面的代码..
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));
我了解大部分,但崩溃将是巨大的,真正博格尔斯我是这一行input = queue.shift()(input);
我知道它使用输入到存储结果,但为什么的开头和结尾?和为什么最后还有一个输入参数?
PS这条线alert(applyAndEmpty(start, puzzlers));
我知道调用函数然后发出警报。为什么我必须在调用/控制台日志等之前调用函数呢?这是因为它不是IIFE,所以在函数被调用之前没有什么可以实际提醒的?它很像一个'开'按钮?
对不起,这很长,在此先感谢!
'queue'是数组,和'shift'返回该阵列,这恰好是一个函数中的第一项,和功能调用'(参数)' – adeneo
功能在他们被叫之前不要做任何事情。一个IIFE立即调用该函数,但是命名函数通常被定义一次,因此可以通过不同的输入重复调用它们。 – Barmar