JavaScriptにおけるプレフィックス型とポストフィックス型
実際には、インクリメントとデクリメントの演算は
二通りの方法で記述できます。まずは++を例にして
これらの方法を見てみましょう。--についても
すべて同様です。
最初の方法では、演算は変数名の後に記述されます。
このように:a++。二つ目の方法では、
変数名の前に記述されます。このように:++a。
最初の形式はポストフィックス、 二つ目はプレフィックスと呼ばれます。 これら二つの形式の違いが現れるケースを見てみましょう。
alert(a++)というコードと
alert(++a)というコードがあるとします。
alert(a++)の場合、変数はまず
表示された後、1だけ増加します。
一方、alert(++a)の場合、変数はまず
1だけ増加し、その後表示されます。
次の例では、最初のalertは
0を出力します。なぜなら、最初に画面への出力が行われ、
その後で変数が増加するからです:
let num = 0;
alert(num++); // 0を出力
alert(num); // 1を出力
今度は、変数が最初に増加し、 その後で画面に出力されます:
let num = 0;
alert(++num); // 1を出力 - 変数は直ちに増加しました
この動作は、画面への出力だけでなく、 代入に対しても有効です:
let num1 = 0;
let num2 = num1++; // 変数num2には0が書き込まれます
alert(num2); // 0を出力
alert(num1); // 1を出力 - 変数num1はnum2への書き込み後に変更されました
次に、ポストフィックス形式をプレフィックス形式に変えてみましょう:
let num1 = 0;
let num2 = ++num1; // 変数num2には1が書き込まれます
alert(num2); // 1を出力
演算が独立した行で実行される場合、 プレフィックス形式とポストフィックス形式の間に 違いはありません:
let num = 0;
++num;
num++;
alert(num); // 2を出力
コードを実行せずに、画面に何が表示されるか 判断してください:
let num = 3;
alert(++num);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num = 3;
alert(num++);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num = 3;
alert(--num);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num = 3;
alert(num--);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num1 = 3;
let num2 = ++num1;
alert(num1);
alert(num2);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num1 = 3;
let num2 = num1++;
alert(num1);
alert(num2);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num1 = 3;
let num2 = --num1;
alert(num1);
alert(num2);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num1 = 3;
let num2 = num1--;
alert(num1);
alert(num2);
コードを実行せずに、画面に何が表示されるか 判断してください:
let num1 = 3;
num1++;
let num2 = num1--;
alert(num1++);
alert(--num2);