8

ここで少し厚かましいかもしれませんが、これに答えてください。次のコードを検討してください。

a=1;
while(a<=6) {
   console.log(a);
   a++;
}

これを実行すると、コンソールに 1 から 6 までの値が表示され、次に別の 6 が表示されます。

これを見てください:

a=1;
while(a<=6) {
    console.log(a);
    ++a;
}

これを実行すると、1 から 7 までの値が得られます。

なぜこうなった?私の理解では、式が true と評価された場合にのみステートメント ブロックが実行されるということでした。私の例の2番目でこれはどのように可能でしょうか? そして、最初に 6 が 2 回現れるのはなぜですか? 私にとって非常に混乱しています。

簡単に説明できれば(私はまだ学んでいます)、それは素晴らしいことです。

4

3 に答える 3

13

コンソールは、最後に評価されたステートメントの値を出力します。2 番目のケースでは、事前にインクリメントするため、その値は 7 であり、最初のケースの 6 ではありません。

呼び出しを変更してconsole.log()、より多くのものを印刷すると、明らかになります。

console.log("a is: " + a);

最後の行にそのプレフィックスは表示されません。

于 2012-06-26T16:13:46.657 に答える
2

どちらの場合も、コンソールがループ内の最後のステートメントの結果を出力しているため、余分な数字が表示されます。

そのコードがコンソールで直接実行されない場合、余分な数字のように見えるものは表示されません。

于 2012-06-26T16:19:49.220 に答える
0

彼らの反応でフィドルを見てください。どちらも 1 ~ 6 を返します。

a++ :インクリメント前のaの値を返します。

++a :インクリメント後のaの値を返します。

'a'<= 6 の値になるまでループが実行されます。

コンソールでコードを実行すると、変数値が評価され、その値が出力されます。そのため、出力にもう 1 つ取得67れます。

このコードを実行すると、1 ~ 6 の値のみが取得されます。

于 2012-06-26T17:04:18.203 に答える