【问题标题】:For Loop does not reach 5For 循环未达到 5
【发布时间】:2013-03-04 21:53:49
【问题描述】:

我在 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,它也应该循环。我的头因此而受伤。 谁能解释一下,谢谢:)

【问题讨论】:

标签: javascript loops for-loop


【解决方案1】:

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

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

它按以下顺序执行这些操作:

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

所以当计数器达到零时,条件为假,并且计数器的值为“0”时不会执行主体,它会简单地停止。但是,当您输入 >= 时,此时条件仍然为真。

【讨论】:

    【解决方案2】:

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

    1. 将计数器设置为 100
    2. 如果计数器 > 0 不为真,则结束此块
    3. 运行此代码块(在本例中为日志计数器)
    4. 将计数器减少 5
    5. 返回步骤 2

    所以在这种情况下,如果计数器为零,则它不是 > 0,因此代码不会返回到步骤 2。而在第二种情况下,它是 >= 0,因此它最后一次运行。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 那么在这个循环中使用(大于或等于)符号实际上是相当正确的吗?你会推荐那个,还是别的什么? :)
      • 你说什么?关于那个?
      • 这种情况下使用>=符号是正确的。有多种方法可以使其达到零。最直接的就是保留counter>=0,否则你可以说counter>-1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多