0

您好,我发现很难理解一些基本的 JavaScript

我编写了一个从 10 倒数到 0 的循环,并且我正在使用 console.log 将该值打印到控制台。在循环内部,一个if语句用于检查数字是否为 0,如果是则 console.log 打印“Blast Off!” 而不是一个数字。

这是我的工作代码:

for (i=10; i>=0; i--;) 
{
if (i === 0)    
    {
    console.log("Blast Off!");
    }
else 
    {
    console.log(i);
    }
}

但是,我拼命想了解的是for循环的停止,即:

i>=0;

这是否有效地说明如果i大于或等于零,然后i每次循环递减,然后在达到零时停止?

相反,当我将for循环代码更改为如下所示的内容时,这是否有效地表示如果i小于或等于零,然后i每次循环递减直到达到零?

如果停止更改,循环不打印的原因是什么?这是因为i 从不保存小于或等于零的值,这意味着循环不会运行吗?

 i<=0;

任何为我解决这个问题的帮助将不胜感激。

4

8 回答 8

2

我认为您的问题是循环中的分号额外:

这是你的代码:

for (i=10; i>=0; i--;)

尝试这个:

for (i=10; i>=0; i--)

也许这就是循环不打印的原因。

于 2013-02-13T17:15:38.350 回答
2

想象一组楼梯,10 级台阶。

--
  | i = 10
   --
     | i = 9
      --
        | i = 8
         --
           | i = 7
            --
              | i = 6
               --
                 | i = 5
                  --
                    | i = 4
                     --
                       | i = 3
                        --
                          | i = 2
                           --
                             | i = 1
                              --
                                | i = 0

想象一下你正在下楼梯,在你的脑海里,你下意识地想:“直到我走到最底层,我会一直走下去”。

类似于 for 循环:

for (i=10; i >= 0; i--)

这就是说,我从最上面的第 10 步开始,如图所示,然后每次(或迭代)爬下一步i--,然后每次下台后,检查,“我在底部吗?楼梯已经?不?继续走“,那是你检查的时候i >= 0

希望能帮助你摆脱绝望;)

于 2012-08-08T09:56:53.770 回答
2

你的理解听起来是正确的。执行语句时,第一个表达式为(在本例中为)for赋值。第二个表达式是比较。它将评估是否大于或等于(它是,因为我们刚刚将其设置为 10)。因为条件的计算结果为,所以循环体被执行。之后,第三个表达式运行,递减 的值,并重复该过程,直到条件评估为(当达到 0 时)。i10truei0trueifalsei

通过将条件更改为i <= 0,它将评估为false第一次,因此循环体将永远不会执行。

确切的行为在 ECMAScript 规范中的“语句”部分中for详细说明。

于 2012-08-08T09:54:17.190 回答
1

你好,首先“i = 10”和

i>=0

是循环的条件。因此,每次i大于或等于零时,循环都会继续返回。由于您使用的是i--所以当i变为负数小于零时,循环将停止。

如果你使用

i<=0

循环的条件为假,因此它不会进入循环执行括号内的代码

于 2012-08-08T10:02:58.287 回答
1

for (i=10; i>=0; i--)这意味着:

  1. 从...开始i=10
  2. 如果没有i>=0,则执行。这是“停止”条件。
  3. 在每个循环之后执行:i = i-1

在此示例中,您不会进入循环,因为重复条件失败。

于 2012-08-08T09:56:23.497 回答
0

您理解正确, for 循环中的 i>=0 告诉运行循环,只要 i 大于或等于 0。

i-- 在循环的每次迭代中递减 i 的值。

于 2012-08-08T09:56:36.233 回答
0

是的,如果你要改变

for (i=10; i>=0; i--)

for (i=10; i<=0; i--)

第一个条件检查是假的,因为 i 不小于或等于 0,所以它不会使循环更糟。

于 2012-08-08T09:53:44.857 回答
0

在进入块之前检查条件,但在增量之后。增量被跳过第一次交互。第一次不满足条件时,整个循环将完全停止。

所以如果使用i<=0,则不满足条件,for会停止。如果你想跳过零,你应该有条件 i>0。

于 2012-08-08T09:53:55.050 回答