172

JavaScript では、変数名の前 ( pre-increment ) または後 ( post-increment++ )に演算子を使用できます。変数をインクリメントするこれらの方法の違いは何ですか?

4

6 に答える 6

316

他の言語と同じ:

  • ++x(pre-increment) は、「変数をインクリメントします。式の値は最終値です」という意味です。
  • x++(post-increment) は、「元の値を記憶してから変数をインクリメントします。式の値は元の値です」という意味です。

スタンドアロンのステートメントとして使用すると、同じことを意味します。

x++;
++x;

式の値を別の場所で使用すると、違いが生じます。例えば:

x = 0;
y = array[x++]; // This will get array[0]

x = 0;
y = array[++x]; // This will get array[1]
于 2010-08-12T16:31:36.017 に答える
63
  • ++x値をインクリメントしてから、評価して保存します。
  • x++値を評価してから、インクリメントして保存します。
var n = 0, m = 0;

alert(n++); /* Shows 0, then stores n = 1 */
alert(++m); /* Shows 1, then stores m = 1 */

++x変数を読み取り、変更してから評価して保存するため、可能な場合は使用することでパフォーマンスがわずかに向上することに注意してください。x++値を読み取り、評価し、変更してから保存するオペレーターと比較してください。

于 2010-08-12T16:34:49.910 に答える
9

私が理解しているように、それらをスタンドアロンで使用すると、同じことを行います。それらの結果を式として出力しようとすると、異なる場合があります。alert(i++) と alert(++i) を比較して違いを確認してください。i++ は加算の前に i に評価され、++i は評価の前に加算を行います。

例については、 http://jsfiddle.net/xaDC4/を参照してください。

于 2010-08-12T16:34:02.347 に答える