For Loop未达到5

时间:2013-03-04 21:53:50

标签: javascript loops for-loop

我正在CodeAcademy尝试学习一些JavaScript,实际上我遇到了这个有趣的事情。请看这里:

for(var counter = 100; counter > 0; counter = counter - 5){
    console.log(counter);
}

这里我告诉循环遍历打印计数器号,只要计数器大于0,但它最终只打印100..95..90等到5。 我知道如何解决这个问题,只需在大于号后添加一个简单的等号即可。 像这样:

for(var counter = 100; counter >= 0; counter = counter - 5){
    console.log(counter);
}

但我有兴趣知道为什么这不会有不同的作用?我的意思是它以5,5结束输出大于0,不是吗?当我在大于符号之前放置一个等号时,它确实应该输出一些未定义的数字,因为它应该循环,即使然后计数器等于0.我的头疼了。 请有人解释一下,谢谢:)

3 个答案:

答案 0 :(得分:2)

不,它一旦达到零就不应该继续循环。循环的工作方式是:

for (initialization; condition; increment) {
    body;
}

它按此顺序执行这些操作:

initialization
loop {
    condition true? then:
        body
        increment
    else:
        stop loop
}

因此,当计数器达到零时,条件将为假,并且不会使用具有值" 0"的计数器执行正文,它将停止。但是当你输入> =时,条件仍然是正确的。

答案 1 :(得分:2)

“for”循环的英文翻译是:

  1. 将计数器设为100
  2. 如果反击> 0不成立,结束此块
  3. 运行此代码块(在本例中为日志计数器)
  4. 减少计数器5
  5. 返回第2步
  6. 因此,在这种情况下,如果计数器为零,则不是> 0因此代码不会返回到步骤2.而在第二种情况下,它是> = 0所以它最后一次运行。

答案 2 :(得分:1)

让我们看看这里发生了什么,

当您说counter > 0时,它应该继续,直到严格大于零。由于零不大于自身,因此循环停止在5。

当你将表达式更改为counter>=0时,它告诉编译器继续直到计数器大于OR等于零,因此它也会继续打印零。