前置インクメントと後置インクリメントの挙動よく忘れるため、メモします。
目次
前置インクリメント
インクリメントとは加算(+)のことです。
+演算子を演算子によって処理される変数やリテラル(オペランド)の前に記述することを前置インクリメントと呼びます↓
let i = 1;
++i;//前置インクリメント i = i + i;の略
console.log(i) // 2
後置インクリメント
+演算子をオペランドの後に記述することを後置インクリメントと呼びます↓
let i = 1;
i++; // 後置インクリメント
console.log(i)
前置と後置の違い
これまでの例では違いがありませんでしたが、インクリメント演算子で計算した結果を他の変数に代入すると違いが出ます↓
//前置インクリメント
let a = 1;
let b = ++a;
console.log(a); //2
console.log(b); //2
// 後置インクリメント
let c = 1;
let d = c++;
console.log(c); //2
console.log(d); //1
上記コードの最終行(11行目)変数dの出力結果に注目してください。変数dには変数cの加算される前の値が代入されています。
つまり以下の書き方と同等になります↓
let a = 1;
// let b = ++a;の書き換え
let b;
a = a + 1;
b = a;
console.log(a); //2
console.log(b); //2
let c = 1;
// let d = c++;の書き換え
let d;
d= c;
c = c + 1;
console.log(c); //2
console.log(d); //1
前置インクリメントは、変数aに1を加算してから、その結果を変数bに代入しています。一方、後置インクリメントの場合、変数dに変数cを代入してから、変数cに1を加算しています。
以上より挙動が異なっていることが分かります。
まとめ
前置と後置の意味は、「加算されるタイミングが前か後か」ということが分かりました。