概要: このチュートリアルでは、単一のオペランドを受け取り、演算を実行するJavaScript単項演算子の使用方法を学習します。
JavaScript単項演算子の概要
単項演算子は1つの値に対して動作します。次の表は、単項演算子とその意味を示しています。
単項演算子 | 名前 | 意味 |
---|---|---|
+x | 単項プラス | 値を数値に変換します。 |
-x | 単項マイナス | 値を数値に変換し、それを否定します。 |
++x | インクリメント演算子(プリフィックス) | 値に1を加算します。 |
–x | デクリメント演算子(プリフィックス) | 値から1を減算します。 |
x++ | インクリメント演算子(ポストフィックス) | 値に1を加算します。 |
x– | デクリメント演算子(ポストフィックス) | 値から1を減算します。 |
単項プラス(+)
単項プラス演算子は、単なるプラス記号(+
)です。数値の前に単項プラスを置いても、何も起こりません。例:
let x = 10;
let y = +x;
console.log(y); // 10
Code language: JavaScript (javascript)
数値以外の値に単項プラス演算子を適用すると、次の表のルールに従ってNumber()
関数を用いて数値変換を実行します。
値 | 結果 |
---|---|
ブール値 | false を0 に、true を1 に変換します。 |
文字列 | 一連の特定のルールに基づいて文字列値を変換します。 |
オブジェクト | valueOf() および/またはtoString() メソッドを呼び出して、数値に変換する値を取得します。 |
例えば、以下は単項プラス演算子を使用して文字列'10'
を数値10
に変換しています。
let s = '10';
console.log(+s); // 10
Code language: JavaScript (javascript)
次の例では、単項プラス演算子(+
)を使用してブール値を数値に変換しています。false
を0
に、true
を1
に変換します。
let f = false,
t = true;
console.log(+f); // 0
console.log(+t); // 1
Code language: JavaScript (javascript)
出力
0
1
次のようにtoString()
メソッドを持つproduct
オブジェクトがあるとします。
let person = {
name: 'John',
toString: function () {
return '25';
},
};
console.log(+person);
Code language: JavaScript (javascript)
出力
25
この例では、toString()
メソッドを持つperson
オブジェクトに単項プラス演算子(+
)を適用すると、JavaScriptエンジンはtoString()
メソッドを呼び出して値('25'
)を取得し、数値に変換します。次に、person
オブジェクトにvalueOf()
メソッドを追加します。
let person = {
name: 'John',
toString: function () {
return '25';
},
valueOf: function () {
return '30';
},
};
console.log(+person);
Code language: JavaScript (javascript)
出力
30
この例では、person
オブジェクトにvalueOf()
メソッドがあるため、JavaScriptエンジンはtoString()
メソッドではなく、このメソッドを呼び出して変換する値を取得します。
単項マイナス(-)
単項マイナス演算子は、単一のマイナス記号(-
)です。数値に単項マイナス演算子を適用すると、数値が反転します。例:
let x = 10;
let y = -x;
console.log(y); // -10
Code language: JavaScript (javascript)
数値以外の値に単項マイナス演算子を適用すると、単項プラス演算子と同じルールを使用して値を数値に変換し、その後値を反転します。
インクリメント/デクリメント演算子
インクリメント演算子は2つのプラス記号(++
)を持ち、デクリメント演算子は2つのマイナス記号(--
)を持ちます。
インクリメント演算子とデクリメント演算子の両方には、プリフィックスとポストフィックスの2つのバージョンがあります。インクリメントまたはデクリメント演算子のプリフィックスとポストフィックスのバージョンは、適用する変数の前と後に配置します。
次の例では、プリフィックスインクリメント演算子を使用して変数に1を加算しています。
let age = 25;
++age;
console.log(age); // 26
Code language: JavaScript (javascript)
これは次のものと等価です。
let age = 25;
age = age + 1;
console.log(age); // 26
Code language: JavaScript (javascript)
次の例では、プリフィックスデクリメント演算子を使用して変数から1を減算しています。
let weight = 90;
--weight;
console.log(weight); // 89
Code language: JavaScript (javascript)
これは次のものと等価です。
let weight = 90;
weight = weight - 1;
console.log(weight); // 89
Code language: JavaScript (javascript)
プリフィックスインクリメントまたはデクリメントを適用すると、JavaScriptはステートメントを評価する前に変数を変更します。例:
let weight = 90;
weight = ++weight + 5;
console.log(weight); // 96
Code language: JavaScript (javascript)
この例では、
- まず、右辺のweightを増やすため、++weightは91になります。
- 次に、++weightに5を加算し、96を返します。
- 最後に、結果を左辺のweightに代入します。
同様に、次の例ではプリフィックスデクリメント演算子を使用しています。
let weight = 90;
weight = --weight + 5;
console.log(weight); // 94
Code language: JavaScript (javascript)
この例では、
- まず、weightから1を減算するため、–weightは89を返します。
- 次に、–weightに5を加算し、94を返します。
- 最後に、結果を左辺のweightに代入します。
ポストフィックスインクリメントまたはデクリメント演算子は、ステートメントの評価後に値を変更します。例:
let weight = 90;
let newWeight = weight++ + 5;
console.log(newWeight); // 95
console.log(weight); // 91
Code language: JavaScript (javascript)
動作方法。
- まず、
weight
(90)に5を加算し、結果をnewWeight
(95)に代入します。 - 次に、2番目のステートメントが完了した後に
weight
変数に1を加算します。weight
は91になります。 - 最後に、
newWeight
とweight
の両方をコンソールに表示します。
数値以外の値にインクリメント/デクリメント演算子を適用すると、次の手順を実行します。
- まず、単項プラス(+)演算子と同じルールを使用して値を数値に変換します。
- 次に、値に1を加算するか、1を減算します。
概要
- 単項演算子は1つの値に対して動作します。
- 単項プラス(
+
)またはマイナス(-
)は、数値以外の値を数値に変換します。単項マイナスは、変換後に値を反転します。 - プリフィックスインクリメント演算子は、値に1を加算します。値は、ステートメントの評価前に変更されます。
- ポストフィックスインクリメント演算子は、値に1を加算します。値は、ステートメントの評価後に変更されます。
- プリフィックスデクリメント演算子は、値から1を減算します。値は、ステートメントの評価前に変更されます。
- ポストフィックスデクリメント演算子は、値から1を減算します。値は、ステートメントの評価後に変更されます。