2016-04-26 11 views
1

なぜこのスクリプトの出力は8ではなく5ですか?Javascript ++ - assistance

--は、-1を2回と考えました。 1.

すなわちy = y - 1

反対++xためhappingされることにより、各ループy減少になる

<html> 
    <body> 
    <script> 
     var x = 0; 

     var y = 10; 

     while (x < y){ 

     x++; 

     y-- ; 

     } 

     document.write(y); 
    </script> 
    </body> 
</html> 
+1

++とは何と思いましたか? –

答えて

0

--yは、1 yによって減少を意味します。これは、1

すなわちx = x + 1

ループはxy 5、同じになるまで、従ってwhileループ条件は、従ってループを壊す、もはや満足されるつもりはない維持することにより、各ループ増分xに意味します。

はインクリメントとデクリメントの詳細をありhere

1

最初の反復:

x = 0 
y = 10 

2回目の反復:

x = 1 
y = 9 

3回目の反復:

x = 2 
y = 8 

いつxyより小さくないでしょうか? xが等しいかyよりも大きい場合には:

x = 5 
y = 5 
1

方が良い「++--」の表記を理解するために:x--はそうでx=x-1と同等です。

+0

実際はそうではありません。 'x - 'は減算される前にxを返します。これは代入や関数呼び出しで使われるときに重要です。 'x = x-1'は' x-1'を返します。だから、微妙だがかなり重要な区別がある。 – Yoshi

+0

それを指摘してくれてありがとうが、私はxを使っていませんでした。代入の例では、 'x = x - 'は 'x = x-1'と等価です。 –

+0

私は知っていますが、プログラマーはサブミティを直ちに見ることはできません。 – Yoshi

0

++演算子は1で数値を増やしますが、--演算子は逆数値を実行し、数値を1で減算します。ここで

はあなたのループの中で何が起こるかです:

#Iteration 0  1  2  3  4  5 
x value  0  1  2  3  4  5 
y value  10  9  8  7  6  5 
x < y  true true true true true false <-- breaking here (iteration 5) 

このタブから、あなたのループがx & yため5の値を反復5で終わる見ることができます。

0を何回増分するかを見てみましょう。

var j = 0; 
 

 
for (var i = 0; i < 1000; i+=1) { 
 
    j++; 
 
} 
 

 
document.write(j); 
 

 
document.write('<hr>'); 
 

 
for (var i = 0; i < 1000; i+=1) { 
 
    j--; 
 
} 
 

 
document.write(j);

Oviously 0は再び10000なってしまいます。

関連する問題