0

私はJavaScriptを学ぼうとしてCodeAcademyに取り組んでいますが、実際にこの興味深いことに遭遇しました。こちらをご覧ください:

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

ここでは、counterが0より大きい限り、counter番号を出力するようにループに指示しますが、100..95..90などを5まで出力するだけです。これを修正する方法を知っています。大なり記号の直後に単純な等号を追加します。このような:

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

しかし、なぜこれが異なって機能しないのか知りたいですか?つまり、出力が5で終了し、5が0より大きいということですね。大なり記号の前に等号を置くと、実際には未定義の数値が出力されるはずです。これは、カウンターが0の場合でもループするためです。これで、頭が痛くなります。誰か説明してもらえますか、ありがとうございます:)

4

3 に答える 3

2

「for」ループの英語訳は次のとおりです。

  1. カウンターを100に設定します
  2. カウンター>0が真でない場合は、このブロックを終了します
  3. このコードブロック(この場合はログカウンター)を実行します
  4. カウンターを5減らす
  5. 手順2に戻ります

したがって、この場合、カウンターがゼロの場合、それは> 0ではないため、コードはステップ2に戻りません。一方、2番目のケースでは、> = 0であるため、最後に1回実行されます。

于 2013-03-04T21:59:37.963 に答える
2

いいえ、ゼロに達した後はループを継続しないでください。ループが機能する方法は次のとおりです。

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

そして、これらの操作を次の順序で実行します。

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

したがって、カウンターがゼロに達すると、条件はfalseになり、値が「0」のカウンターで本体が実行されず、単に停止します。ただし、> =を入力すると、その時点でも条件は真になります。

于 2013-03-04T21:59:02.987 に答える
1

ここで何が起こっているのか見てみましょう、

あなたが言うときcounter > 0、それはそれが厳密にゼロより大きくなるまで続くべきです。ゼロはそれ自体より大きくないため、ループは5で停止します。

式をに変更するとcounter>=0、カウンタがORがゼロより大きくなるまで続行するようコンパイラに指示するため、ゼロも出力されます。

于 2013-03-04T22:00:25.557 に答える