我正在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.我的头疼了。 请有人解释一下,谢谢:)
答案 0 :(得分:2)
不,它一旦达到零就不应该继续循环。循环的工作方式是:
for (initialization; condition; increment) {
body;
}
它按此顺序执行这些操作:
initialization
loop {
condition true? then:
body
increment
else:
stop loop
}
因此,当计数器达到零时,条件将为假,并且不会使用具有值" 0"的计数器执行正文,它将停止。但是当你输入> =时,条件仍然是正确的。
答案 1 :(得分:2)
“for”循环的英文翻译是:
因此,在这种情况下,如果计数器为零,则不是> 0因此代码不会返回到步骤2.而在第二种情况下,它是> = 0所以它最后一次运行。
答案 2 :(得分:1)
让我们看看这里发生了什么,
当您说counter > 0
时,它应该继续,直到严格大于零。由于零不大于自身,因此循环停止在5。
当你将表达式更改为counter>=0
时,它告诉编译器继续直到计数器大于OR等于零,因此它也会继续打印零。