2016-03-28 4 views
0

以下のコードを実行すると、document.write内のテキストが予想通りに8回でなく7回実行されます。予想以上の結果を表示するJavascript forループ

私が正しく理解している場合、2刻みで表示される位置は、
20+2, 22+2, 24+2, 26+2, 28+2, 30+2 and 32+2です。

結果に基づいて、34 + 2、つまり36が表示されると仮定します。紛失していますか?ありがとうございました。

x = 20; 
for (x = 20; x < 35; x += 2) { 
    document.write("How many times will this loop execute?" + "<br/>"); 
}; 
+3

xの値が20,22,24,26,28,30,32,34、つまり8回の場合に実行されます。 – nikhil

+2

最初の反復を除外しました.'20'は '35'より小さくなります。 – Rayon

+2

8回は正しいです... 20,22,24,26,28,30,32,34 ... –

答えて

2

上記のコメントに記載されている、ループは8回の実行で正しいです。誰もその理由を述べなかったので、それはこれです:x+=2は、最初ではなく、ループのエンドで起こります。開始ループは以下のようなXに+2を追加するので、ループ20、22、24、26、28、30、32、及び34

+0

ええ、私はhttpsでコードを実行する: //jsfiddle.net/そしておそらく彼は他の場所で変数xを宣言しているかもしれません....私はそう思います –

+0

ありがとう。私は最初の反復を考慮しなかった。これは、私が思ったように、36ではなく、20である。 Javascriptから始めるので、これらのような単純なものでさえ、今はあまり意味がありません。 –

+0

私は助けることができる嬉しい:) – senschen

0

for loopの仕組みが誤解されています。 (; [条件]、[初期化] [最終発現])のため

最終の発現:発現は、各ループ反復の終わりにを評価します。これは、次の条件評価の前に発生します。一般に、カウンタ変数を更新またはインクリメントするために使用されます。

だからあなたのカウンターは、ループの最後で増分されますと観測された行動は正しいです。ループは20,22,24,26,28,30,32,34で実行されます。

0

これは8回実行され、xは20と34の間のすべての偶数で反復します。それが助け場合は、このようにそれを書き込むことができます。

var x = 20; 
while (x <= 34) { 
    // do something 
    x += 2; 
} 

をしかし、それ以来、ループは(あなたがforwhileバージョンを使用しているかどうか)を実行した後、xは36に等しくなることに注意することが重要です最終的にテストに失敗する前にそれにインクリメントされます。ループ内でxは36になることはありません。ベストプラクティスに関しては、ループ内でxのようなカウンタ変数を使用してください。これは(例は単にDOM要素としてx値のリストをプリントアウト)が同様に(ブロックスコープである)ES6 letキーワードを使用して実施することができる。よう

function appendSpanCounter(i, end) { 
 
    let el = document.createElement("span"), 
 
     content = i.toString(10); 
 

 
    if (i < end) content += ", "; 
 

 
    (typeof el.textContent === "string") // ternary operator 
 
     ? el.textContent = content 
 
     : el.innerText = content; 
 

 
    (document.body || document.querySelector("body")).appendChild(el); 
 
} 
 

 
for (let x = 20; x <= 34; x += 2) { 
 
    appendSpanCounter(x, 34); 
 
} 
 
// x is now undefined here

0

ために実行される:

x = 20; 
for (x = 20+2; x<35; x+=2) { 
     document.write("How many times will this loop execute?" + "<br/>"); 
    }; 

fiddle

0

スクリプト:

x = 20; 
count = 1; 
for (x = 20; x < 35; x += 2){ 
    document.write("Execution: "+ (count++)+ "<br/>"); 
}; 

出力

ループは合計8回実行されます。チェックアウトへ

Execution: 1 
Execution: 2 
Execution: 3 
Execution: 4 
Execution: 5 
Execution: 6 
Execution: 7 
Execution: 8 

jsfiddle link

0

あなたが7回をしたい場合は×2 2

x = 20; 
 
for (x = 20; x < 35; x += 2) { 
 
    document.write("Execute for " + x + " " + "<br/>"); 
 
}; 
 

 
/* 
 
OUTPUT: 
 

 
Execute for 20 
 
Execute for 22 
 
Execute for 24 
 
Execute for 26 
 
Execute for 28 
 
Execute for 30 
 
Execute for 32 
 
Execute for 34 
 
*/

で20から35までであることは、あなたが

に変更することができますので、はい、8回を実行しています

x = 20; 
 
for (x = 20; x < 34; x += 2) { 
 
    document.write("Execute for " + x + " " + "<br/>"); 
 
};

関連する問題