JavaScript入門 | 演算子 | 比較演算子

比較演算子

比較演算子は、オペランド間の相対的な大小や等しさを判定し、trueまたはfalseを返す。比較演算子はすべて2つのオペランドを持つ二項演算子であり、オペランドの結合方向は左から右である。

比較演算子 説明
== 左オペランドと右オペランドの値が等しければtrueを返す。
=== 左オペランドと右オペランドの値が等しく、型も同じであればtrueを返す。
!= 左オペランドと右オペランドの値が等しくなければtrueを返す。
!== 左オペランドと右オペランドの値が等しくない、または型が異なればtrueを返す。
> 左オペランドの値が右オペランドの値より大きければtrueを返す。
>= 左オペランドの値が右オペランドの値以上であればtrueを返す。
< 左オペランドの値が右オペランドの値より小さければtrueを返す。
<= 左オペランドの値が右オペランドの値以下であればtrueを返す。

JavaScriptでは、比較演算子はオペランドの型に応じて次の2つの基準で比較を行う。

  1. オペランドがどちらも数値であれば、その数値同士を比較する。
  2. オペランドがどちらも文字列であれば、文字列の先頭文字からアルファベット順に比較する。
var x = 3, y = 5;
var a = "abc", b = "bcd";
document.write((x > y) + "<br>");  // yの値がxの値より大きいためfalse
document.write((a <= b) + "<br>"); // アルファベット順で'a'は'b'より先に来るため、'a'は'b'より小さい。
document.write(x < a);             // xの値は数値で、aの値は文字列なので比較できない。

上の3番目の演算では、変数xの値は数値であり、変数aの値は文字列である。比較演算子<は、xの値がaの値より小さい場合にだけtrueを返し、それ以外の場合はすべてfalseを返す演算子である。したがって、型が異なり比較できない場合はtrueの条件を満たせないため、常にfalseだけを返す。

等価演算子と厳密等価演算子

等価演算子(==)と厳密等価演算子(===)は、どちらも2つのオペランドが等しいかどうかを比較する。どちらの演算子もオペランドの型を問わないが、等しさを定義する基準が少し異なる。

等価演算子(==)は、2つのオペランドの値が等しければtrueを返す。このとき、2つのオペランドの型が異なれば、比較のために型を強制的に同じに変換する。しかし厳密等価演算子(===)は、型変換を行わず、2つのオペランドの値が等しく型も同じである場合にだけtrueを返す。

var x = 3, y = '3', z = 3;
document.write((x == y) + "<br>");  // xとyの型が異なるため、型を同じにしてから比較するのでtrue
document.write((x === y) + "<br>"); // xとyの型が異なるためfalse
document.write(x === z);            // xとzは値と型がどちらも同じなのでtrue

不等価演算子(!=)と厳密不等価演算子(!==)は、それぞれ等価演算子と厳密等価演算子の比較とは正反対に動作する。