Javascript在For循环中跳过间隔

时间:2017-01-30 14:29:27

标签: javascript

我在JavaScript中有一个for循环,它定期跳过间隔,我无法确定原因。

console.log(parseInt($('input.num-to-add').val()));
numToAdd = parseInt($('input.num-to-add').val());
console.log(numToAdd);
for(i=0;i<numToAdd;i++){
    console.log('Running loop for ' + i + '...');
    // the following code won't mean much
    // but it was noted that the full code should be present
    table.find('tbody').prepend(data.html);
    var row = table.find('tbody #add-location-row').first();
    rowInit(row);
}

正如你所看到的,我是console.log几乎每一步,我都无法确定问题。控制台输出中很好地说明了问题本身。例如,如果input.num-to-add的值为8,这就是我在控制台中看到的内容:

8
8
Running loop for 0...
Running loop for 6...
Running loop for 7...

我真的看不出这里会出现什么问题。在我看来,这是非常简单和基本的代码,但它在某种程度上打破我根本无法确定。

1 个答案:

答案 0 :(得分:4)

正如许多其他人已在评论部分中指出的那样,肯定会发生这种情况,因为您使用名为i全局变量作为循环变量。如果在i中使用相同的全局变量rowInit,则会干扰此循环。解决方案很简单,总是使用正确的范围变量:

for(var i=0;i<numToAdd;i++){
    console.log('Running loop for ' + i + '...');
    // the following code won't mean much
    // but it was noted that the full code should be present
    table.find('tbody').prepend(data.html);
    var row = table.find('tbody #add-location-row').first();
    rowInit(row);
}

甚至更好:

for(let i=0;i<numToAdd;i++){