需要帮助理解函数内的这个变量

时间:2014-01-07 02:33:12

标签: javascript

这是非常基本的东西,但我正试图解决这个问题,以继续理解基本的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));

3 个答案:

答案 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