前置と後置で結果が異なる
演算子の前置・後置を理解しないとバグを生んでしまうことがあります。
それは前置と後置で結果が異なる場合があるからです。
以下の問題を解くコードを考えてみてください。
問題 配列に1~9までの整数を代入した変数を作成し、配列内のそれぞれの数値に1を足したものをコンソールに出力してください。ただし、インクリメント演算子を使用し、1行で書いてください。
以下のコードの//insert code here
の場所にコードを記述してください。
let ary = [1,2,3,4,5,6,7,8,9];
for(let i = 0; i < ary.length; i++) {
// insert code here
}
答え
let ary = [1,2,3,4,5,6,7,8,9];
for(let i = 0; i < ary.length; i++) {
console.log(++ary[i]);
}
出力
2
3
4
5
6
7
8
9
10
console.log(++ary[i])
の箇所をconsole.log(ary[i]++)
に変えるとどうなるでしょうか。
出力としては1,2,3,4,5,6,7,8,9
になり、表示では1足されていないことになります。
前置・後置を分かりやすくすると、以下のコードの省略形ということになります。
前置(++i)
ary[i] = ary[i] + 1;
console.log(ary[i]);
後置(i++)
console.log(ary[i]);
ary[i] = ary[i] + 1;