JavaScript での i++ と++i の違い

Tahseen Tauseef 2023年10月12日
  1. JavaScript のインクリメントおよびデクリメント演算子
  2. JavaScript の接尾辞と接頭辞のインクリメント演算子
JavaScript での i++ と++i の違い

このチュートリアル記事では、インクリメント演算子とデクリメント演算子について詳しく説明します。

JavaScript のインクリメントおよびデクリメント演算子

インクリメント演算子とデクリメント演算子は、変数の値を 1 ずつ増減するために使用されます。これらのインクリメント演算子とデクリメント演算子は複数の方法で記述でき、それぞれの方法にプロパティがあり、同じではありません。通常、これらの演算子はループで見られ、ループでの使用に精通しています。

インクリメント演算子とデクリメント演算子を使用する最も一般的な 2つの方法は次のとおりです。

  • ++variable(プレフィックス)
  • variable++(ポストフィックス)
  • --variable(プレフィックス)
  • variable--(ポストフィックス)

インクリメント/デクリメント演算子のこれら 2つの方法は、変数の値を 1 ずつ更新するという点で同じですが、よく見ると違いがあります。

次の例では、インクリメント演算子を使用する Prefix メソッドを使用し、その動作を理解します。

var i = 5;
alert(++i);
alert(i);

上記のコードでは、変数 i の初期値は 5 であり、次の行では、アラートメッセージを使用してプレフィックスインクリメントの動作を示しています。これで、アラートはインクリメント後に i の値を取得します。したがって、アラートは i の値を 6 として生成します。また、i のアラートがある次の行は、前のアラートと同じ値 6 を返します。

インクリメント演算子を使用する接尾辞の方法を見てみましょう。

var i = 5;
alert(i++);
alert(i);

このコードセグメントには、アラートで使用される接尾辞インクリメント演算子があります。i 変数の初期値は 5 で、インクリメント演算子は 6 になります。

ただし、アラートで接尾辞インクリメント演算子を使用すると、アラートの値は以前と同じように i(5)になります。ここでは増分は見られません。

ただし、アラートを使用して i の値を取得する次の行では、新しい値が 1 ずつインクリメントされます。したがって、新しい値は 6 になります。

ここで、prefix メソッドは、最初に変数を 1 ずつインクリメントしてから、アラートによってフェッチされます。ただし、接尾辞では、i 変数の値が増分の前にフェッチされるため、最初のアラートには以前と同じ値が表示されます。

そして、最初のアラートが実行されると、i 変数の値が更新され、次のアラートメッセージによってフェッチされます。

インクリメント演算子を書く別の方法は

> i = i + 1;

このメソッドはプレフィックスメソッドと同じであり、増分数を変更する場合に使用されます。次の例を見てみましょう。

var i = 5;
i = i + 1
alert(i);

この例では、変数 i が 1 ずつインクリメントされます。したがって、アラートが変数 i の値をフェッチしようとすると、変数は新しいインクリメントされた値を送信し、最初のアラートに出力があります。このメソッドはプレフィックスメソッドと同じであり、値がフェッチされる前に、インクリメント操作が実行されます。

JavaScript の接尾辞と接頭辞のインクリメント演算子

以下は、インクリメント演算子を使用するさまざまな方法を使用した複雑な例です。

var i = 5;
var j = 10;
alert(i++);        // shows 5
alert(j++);        // shows 10
alert(++i);        // shows 7
alert(++j);        // shows 12
alert(i = i + 1);  // shows 8
alert(i);          // shows 8

このコードセグメントでは複数のインクリメント演算子を使用しており、各行にはコメントとして出力が書き込まれています。接尾辞の増分は 1 番目と 2 番目のアラートで使用されるため、変数の値はアラートがフェッチした後にインクリメントされます。

同様に、アラートは、プレフィックス増分演算子として 3 番目と 4 番目のアラートメッセージでインクリメントした後の値を示します。

一部の言語では、接尾辞と接頭辞に違いはありませんが、JavasScript では、即時の結果に関心がない場合、これらは同じ目的を果たします。ただし、即時の結果を必要とする JavaScript プログラムがある場合、接尾辞と接頭辞の違いは次のとおりです。

Postfix(i++):最初に変数 i の値を返し、次に変数をインクリメントします

Prefix(i--):変数にインクリメントが行われた後、変数 i の値を返します。

関連記事 - JavaScript Operator