什么阻止这个JavaScript for循环无限循环?

时间:2014-01-16 16:13:02

标签: javascript loops for-loop

对于JavaScript,我绝对是一个新手。我搜索了stackoverflow和web,以解释为什么这个JavaScript for循环不会无限循环,但我还没有找到一个明确的答案。我目前正在使用这个循环,我借用和修改的循环,在我的网站上,它按预期工作;但是,我想知道它为什么不能无限循环。我的印象是for循环的第一个语句定义循环变量,第二个设置循环条件(防止无限循环),第三个在执行代码块后修改循环变量。如果缺少循环条件语句,为什么这个循环不能无限循环?

function showAll() {
    var aBoxes = document.querySelectorAll('.aBox');
    for (var i = a.Boxes.length; i--;) {
        aBoxes[i].style.display = 'block';
    }
}

4 个答案:

答案 0 :(得分:4)

当变量“i”最终递减为0时,i--的值将为“falsy”,循环将终止。循环不缺少条件表达式;那就是i--

答案 1 :(得分:0)

只要i--;不是0,它将被评估为true,因此循环将继续。当它达到0,其评估为false时,它将停止

答案 2 :(得分:0)

因为它没有缺少循环条件语句。它缺少修改声明。缺少第二个条件的人看起来像这样:

for (var i = a.Boxes.length; ; i--)

你的循环正在做什么,每当检查循环条件语句然后检查结果值是真还是假(即非零或非零)时,递减i零)。当i足够小(i==0)时,这将终止循环。

答案 3 :(得分:0)

循环没有错过条件表达式;它缺少每次循环迭代结束时出现的表达式(第三个表达式)。但是,i作为条件表达式的副作用递减,因此不需要最终表达式。

条件表达式在false到达i后评估为0,因此循环终止。

更一般地说,for语句中的每个表达式都是可选的。省略其中任何一个或全部都是完全可以的。