JavaScript 入門 | 演算子 (operator) | その他の演算子

文字列結合演算子

JavaScript で加算 (+) 演算子は、オペランドの型に応じて 2 つの異なる演算を行う。

  1. オペランドがどちらも数値であれば、算術演算である加算を行う。
  2. オペランドのどちらか一方でも文字列であれば、文字列結合を行う。
var x = 3 + 4;                   // オペランドがどちらも数値であれば加算演算を行う。
var y = "よい " + "一日を!" // オペランドがどちらも文字列であれば文字列結合演算を行う。
var z = 12 + "月"                // オペランドのどちらか一方でも文字列であれば文字列結合演算を行う。

オペランドの一方が文字列で、もう一方が文字列でない場合、JavaScript は文字列でないオペランドを自動的に文字列へ変換した後、文字列結合を行う。

三項演算子 (ternary operator)

三項演算子は、3 つのオペランドを持つ唯一の条件演算子である。

三項演算子の構文は次のとおりである。

構文

式 ? 戻り値1 : 戻り値2

疑問符 (?) の前の式によって、結果値が真であれば戻り値1を返し、結果値が偽であれば戻り値2を返す。

var x = 3, y = 5;
var result = (x > y) ? x : y   // x の方が大きければ x を、そうでなければ y を返す。
document.write("2 つのうち大きい数は " + result + " である。");

三項演算子は短い if / else 文の代わりに使用でき、コードを簡潔にしてくれる。

カンマ演算子

カンマ演算子を for 文で使用すると、ループごとに複数の変数を同時に更新できる。

// ループごとに i の値は 1 ずつ増加し、同時に j の値は 1 ずつ減少する。
for (var i = 0, j = 9; i <= j; i++, j--) {
    document.write("i の値は " + i + " で、j の値は " + j + " である。<br>");
}

delete 演算子

delete 演算子は、オペランドであるオブジェクト、オブジェクトのプロパティ (property)、または配列の要素 (element) などを削除する。

オペランドを正常に削除できた場合は true を返し、削除できなかった場合は false を返す。
この演算子はオペランドが 1 つだけの単項演算子であり、オペランドの結合方向は右から左である。

var arr = [1, 2, 3];          // 配列の作成
delete arr[2];                // 配列の要素のうち、インデックスが 2 の要素を削除する。
document.write(arr + "<br>"); // [1, 2, ]
// 配列に空きができたのであり、undefined 値へ直接設定されたわけではない。
document.write(arr[2] + "<br>");
// 配列の要素を削除するだけで、配列の長さまで減るわけではない。
document.write(arr.length);

typeof 演算子

typeof 演算子はオペランドの型を返す。
この演算子はオペランドが 1 つだけの単項演算子であり、オペランドの結合方向は右から左である。
JavaScript でよく使用する値と、その値に対する typeof 演算子の結果値は次のとおりである。

typeof 演算子の結果値
数値, NaN “number”
文字列 “string”
true, false “boolean”
null “object”
undefined “undefined”
関数 “function”
関数ではないオブジェクト “object”
typeof "文字列"   // string
typeof 10         // number
typeof NaN        // number
typeof false      // boolean
typeof undefined  // undefined
typeof new Date() // object
typeof null       // object

instanceof 演算子

instanceof 演算子は、オペランドであるオブジェクトが特定のオブジェクトのインスタンスかどうかを確認する。
オペランドが特定のオブジェクトのインスタンスであれば true を返し、特定のオブジェクトのインスタンスでなければ false を返す。
この演算子は 2 つのオペランドを持つ二項演算子であり、オペランドの結合方向は左から右である。

var str = new String("これは文字列である。");

str instanceof Object;  // true
str instanceof String;  // true
str instanceof Array;   // false
str instanceof Number;  // false
str instanceof Boolean; // false

void 演算子

void 演算子は、オペランドとしてどの型の値が来ても、常に undefined 値だけを返す。
この演算子はオペランドが 1 つだけの単項演算子であり、オペランドの結合方向は右から左である。

<a href="javascript:void(0)">このリンクは動作しない。</a>

<a href="javascript:void(document.body.style.backgroundColor='yellow')">
    このリンクも動作しないが、HTML 文書の背景色を変更する。
</a>

上の例のように、void 演算子は未定義のプリミティブ型の値を得るために void(0) のような形でよく使用される。