JavaScript単項演算子の解説

概要: このチュートリアルでは、単一のオペランドを受け取り、演算を実行するJavaScript単項演算子の使用方法を学習します。

JavaScript単項演算子の概要

単項演算子は1つの値に対して動作します。次の表は、単項演算子とその意味を示しています。

単項演算子名前意味
+x単項プラス値を数値に変換します。
-x単項マイナス値を数値に変換し、それを否定します。
++xインクリメント演算子(プリフィックス)値に1を加算します。
–xデクリメント演算子(プリフィックス)値から1を減算します。
x++インクリメント演算子(ポストフィックス)値に1を加算します。
x–デクリメント演算子(ポストフィックス)値から1を減算します。

単項プラス(+)

単項プラス演算子は、単なるプラス記号(+)です。数値の前に単項プラスを置いても、何も起こりません。例:

let x = 10;
let y = +x;

console.log(y); // 10Code language: JavaScript (javascript)

数値以外の値に単項プラス演算子を適用すると、次の表のルールに従ってNumber()関数を用いて数値変換を実行します。

結果
ブール値false0に、true1に変換します。
文字列一連の特定のルールに基づいて文字列値を変換します。
オブジェクトvalueOf()および/またはtoString()メソッドを呼び出して、数値に変換する値を取得します。

例えば、以下は単項プラス演算子を使用して文字列'10'を数値10に変換しています。

let s = '10';
console.log(+s); // 10Code language: JavaScript (javascript)

次の例では、単項プラス演算子(+)を使用してブール値を数値に変換しています。false0に、true1に変換します。

let f = false,
    t = true;

console.log(+f); // 0
console.log(+t); // 1Code 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); // -10Code language: JavaScript (javascript)

数値以外の値に単項マイナス演算子を適用すると、単項プラス演算子と同じルールを使用して値を数値に変換し、その後値を反転します。

インクリメント/デクリメント演算子

インクリメント演算子は2つのプラス記号(++)を持ち、デクリメント演算子は2つのマイナス記号(--)を持ちます。

インクリメント演算子とデクリメント演算子の両方には、プリフィックスとポストフィックスの2つのバージョンがあります。インクリメントまたはデクリメント演算子のプリフィックスとポストフィックスのバージョンは、適用する変数の前と後に配置します。

次の例では、プリフィックスインクリメント演算子を使用して変数に1を加算しています。

let age = 25;
++age;

console.log(age); // 26Code language: JavaScript (javascript)

これは次のものと等価です。

let age = 25;
age = age + 1;
console.log(age); // 26Code language: JavaScript (javascript)

次の例では、プリフィックスデクリメント演算子を使用して変数から1を減算しています。

let weight = 90;
--weight;

console.log(weight); // 89Code language: JavaScript (javascript)

これは次のものと等価です。

let weight = 90;
weight = weight - 1;

console.log(weight); // 89Code language: JavaScript (javascript)

プリフィックスインクリメントまたはデクリメントを適用すると、JavaScriptはステートメントを評価する前に変数を変更します。例:

let weight = 90;
weight = ++weight + 5;

console.log(weight); // 96Code language: JavaScript (javascript)

この例では、

  • まず、右辺のweightを増やすため、++weightは91になります。
  • 次に、++weightに5を加算し、96を返します。
  • 最後に、結果を左辺のweightに代入します。

同様に、次の例ではプリフィックスデクリメント演算子を使用しています。

let weight = 90;
weight = --weight + 5;

console.log(weight); // 94Code 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); // 91Code language: JavaScript (javascript)

動作方法。

  • まず、weight(90)に5を加算し、結果をnewWeight(95)に代入します。
  • 次に、2番目のステートメントが完了した後にweight変数に1を加算します。weightは91になります。
  • 最後に、newWeightweightの両方をコンソールに表示します。

数値以外の値にインクリメント/デクリメント演算子を適用すると、次の手順を実行します。

  • まず、単項プラス(+)演算子と同じルールを使用して値を数値に変換します。
  • 次に、値に1を加算するか、1を減算します。

概要

  • 単項演算子は1つの値に対して動作します。
  • 単項プラス(+)またはマイナス(-)は、数値以外の値を数値に変換します。単項マイナスは、変換後に値を反転します。
  • プリフィックスインクリメント演算子は、値に1を加算します。値は、ステートメントの評価前に変更されます。
  • ポストフィックスインクリメント演算子は、値に1を加算します。値は、ステートメントの評価後に変更されます。
  • プリフィックスデクリメント演算子は、値から1を減算します。値は、ステートメントの評価前に変更されます。
  • ポストフィックスデクリメント演算子は、値から1を減算します。値は、ステートメントの評価後に変更されます。
このチュートリアルは役に立ちましたか?