0

こんにちは、いくつかの基本的な JavaScript を理解するのが難しいと感じています

10 から 0 までカウントダウンするループを作成し、console.log を使用してその値をコンソールに出力しています。ループ内ではif、数値が 0 かどうかを確認するためにステートメントが使用されます。数字の代わりに。

ここに私の作業コードがあります:

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

あなたの理解は正しいように聞こえます。forステートメントが実行されると、最初の式によって値が (この場合は ) に割り当てられiます10。2 番目の式は比較です。が以上であるtrue場合に評価されます(10 に設定したので、これはそうです)。条件が と評価されるため、ループ本体が実行されます。その後、3 番目の式が実行され、 の値が減分されます。このプロセスは、条件が( 0 に達したとき)と評価されるまで繰り返されます。i0trueifalsei

条件を に変更すると、最初i <= 0に評価されるfalseため、ループ本体が実行されることはありません。

正確な動作については、ECMAScript 仕様の「ステートメント」forセクションで詳しく説明されています。

于 2012-08-08T09:54:17.190 に答える
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--毎回 (または繰り返し) 1 ステップずつ降りていき、降りるたびに、「私は一番下にいますか?」と確認します。もう階段?いいえ?続けて」、それはあなたがチェックするときですi >= 0

あなたの絶望からあなたを助けることを願っています;)

于 2012-08-08T09:56:53.770 に答える
1

for (i=10; i>=0; i--)これを意味します:

  1. 皮切りにi=10
  2. そうでない場合i>=0は実行します。これが「停止」状態です。
  3. 各ループの後、次のことを行います。i = i-1

この例では、繰り返し条件が失敗するため、ループに入りません。

于 2012-08-08T09:56:23.497 に答える
1

こんにちは、まず「i=10」と

i>=0

ループの条件です。iそのため、がゼロ以上になるたびに、ループが継続して返されます。あなたが使用してi--いるので、i負になるとゼロ以下になり、ループが停止します。

使用する場合

i<=0

ループの条件が false であるため、ループに入って括弧内のコードを実行することはありません

于 2012-08-08T10:02:58.287 に答える
0

はい、あなたが変わるなら

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

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

i が 0 以下ではないため、最初の条件チェックは false であり、ループは終了しません。

于 2012-08-08T09:53:44.857 に答える
0

条件は、ブロックに入る前にチェックされますが、インクリメントの後にチェックされます。インクリメントは最初の反復でスキップされます。初めて条件が満たされない場合、ループ全体が完全に停止します。

したがって、i<=0 を使用すると、条件が満たされないため、for は停止します。ゼロをスキップしたい場合は、i>0 という条件が必要です。

于 2012-08-08T09:53:55.050 に答える
0

for ループの i>=0 は、i が 0 以上である限りループを実行するように指示します。

i_- は、ループの反復ごとに i の値を減らします。

于 2012-08-08T09:56:36.233 に答える