这是非常基本的东西,但我正试图解决这个问题,以继续理解基本的Javascript语法。
基本上,我不明白为什么创建变量length = queue.length;
。
为什么for循环不能循环i < queue.length
而不是为它创建变量。
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(2, puzzlers));
答案 0 :(得分:5)
请注意,在循环内部,您已获得:
queue.shift()
shift
方法从数组中删除第一个元素并返回它。这意味着queue
不断调整大小,但您的i
变量无论如何都会增加。如果你没有这样做,它实际上会遍历队列中第一个元素的前半部分。
答案 1 :(得分:0)
你可以做到!但是你会有一个很大的句子。您只能使用queue.length
而不是使用变量。
答案 2 :(得分:-1)
因为“queue.length”将执行属性查找并且这是非常广泛的,所以将其保存在局部变量中以使循环具有良好的性能。 请在此链接中查看更多内容:http://oreilly.com/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html#javascript_code_execution_with_timers?