0

私たち全員が知っているように:

i++ -> 最初に i を使用してから、その値をインクリメントします

++i -> 最初に i をインクリメントしてから、i の新しい値を使用します

しかし、以下のコードでは何か違う

var n=5;
for(i=n;i>=1;--i)
{
   console.log(i);//output:5 why?
    for(j=1;j<=n;++j)
    {
       document.write(j);
    }
document.write("\n");
}

プリデクリメント演算子を使用しているにもかかわらず、最初のループで vaule が 5 を出力するのはなぜですか? また、innerLoop の完了後に新しい行を使用していますが、表示されません。これの背後にある理由は何ですか?各ループ document.write() が document.open() 関数を実行しているのでしょうか?はいの場合、その中で|| コンテキスト || 条件は document.write が document.open() 関数を実行しますか?

4

2 に答える 2

9

++jinは、ループ内のステートメントが実行された後、ループのfor(j=1;j<=n;++j)最後に発生するため、との間の構造にfor違いはありません。for++jj++

ループは次のように考えることができます。

for(j=1;j<=n;)
{
   document.write(j);
   ++j;
}

console.log(i);//output:5 why?質問に関しては、それはがassign5の初期値だからです。ii=n

に関してはdocument.write('/n');、HTML は改行を無視します。目に見える改行が必要な場合は、<p>または<br>スペースを作る他の HTML 構造を使用します。改行は無視されます。

この HTML に違いはありません。

<span>This is some text</span>

そして改行を含むこのHTML:

<span>
This is some text
</span>
于 2013-04-18T02:27:17.257 に答える
2

また、innerLoop の完了後に新しい行を使用していますが、表示されません

HTML の改行は<br>であり、\nこれは空白ではないため、(HTML 仕様に従って) 新しい行を作成しません。

于 2013-04-18T02:35:36.367 に答える