🔖
JSの後置インクリメント、前置インクリメントどちらを使えば良いのか?
後置インクリメントと前置インクリメントの挙動が違うことは知っていたのですが、具体的にどのような違いがあり、どのように使い分けすれば良いのか不明だったのでメモ程度に残しておきます。
後置インクリメントと前置インクリメントの違い
この2つの違いはインクリメント演算子で計算した結果を他の変数に代入した時に現れます。
MDNにも似たような例が掲載されています。
後置インクリメント
後置インクリメントだとxには加算結果が反映されませんが、代入した変数には結果が現れます。
let x = 3;
y = x++;
// y = 3
// x = 4
前置インクリメント
前置インクリメントだとxにもyにも加算結果が反映されます。
let x = 2;
y = ++y;
// x = 3
// y = 3
なぜこのような違いが出るのか
違いが出る理由は単純で後置インクリメントは代入した後に加算が行われ、前置インクリメントは加算が行われた後に代入が行われるからです。
どっちを使えば良いのか?
for (int i = 0; i < n; ++i)
for (int i = 0; i < n; i++)
インクリメント演算子をよく見るのは上記のようなfor文かと思います。
++i
, i++
が単独で現れ、式の値を使わない場合は動作に関して違いはないので、どちらもを使っても大丈夫です。
ただ、先ほどの紹介した違いは理解した上で利用した方が良いでしょう。
参考
Discussion