JavaScript 比較演算子

English version.

数値や文字列などのデータ型の比較に使用されます。比較演算子は、true または false を返すブール値を生成します。

説明

== 等しい

比較演算子 == は、左辺と右辺が等しいかどうかを比較する演算子です。ただし、注意すべき点があります。== 演算子は、比較する前に、必要に応じて型変換を行います。つまり、比較する前に、左辺と右辺の型を同じにするために、片方または両方のオペランドの型を変換することがあります。

たとえば、次の例を考えてみましょう。

console.log(5 == '5'); // true

この例では、== 演算子が使用され、左辺に数値 5 が、右辺に文字列 '5' が指定されています。この場合、右辺の文字列は数値に変換され、比較が行われます。'5' は数値 5 に変換されるため、5 == 5 と同じ結果になります。つまり、この例では true がコンソールに出力されます。

しかしながら、この振る舞いは混乱を招くことがあります。たとえば、次の例を考えてみましょう。

console.log(0 == ''); // true

この例では、左辺に数値 0 が、右辺に空文字列 '' が指定されています。この場合、右辺の空文字列は数値に変換されます。空文字列は数値に変換すると 0 になるため、0 == 0 と同じ結果になります。つまり、この例では true がコンソールに出力されます。

これらの例からわかるように、== 演算子は、型変換を伴うため、予期しない比較結果を生み出すことがあります。そのため、== 演算子の代わりに、=== 演算子を使用することが推奨されています。=== 演算子は、値と型が完全に一致する場合にのみ等しいと判断するため、意図しない比較結果を回避できます。

=== 厳密に等しい

== 演算子と === 演算子を使用して数値と文字列を比較するサンプルコードです。

console.log(5 == '5'); // true
console.log(5 === '5'); // false

=== 演算子の方が安全なため、こちらをメインに利用しましょう。

!= 等しくない

比較演算子 != は、左辺と右辺が等しくないかどうかを比較する演算子です。== 演算子と同様に、!= 演算子も型変換を行います。つまり、比較する前に、左辺と右辺の型を同じにするために、片方または両方のオペランドの型を変換することがあります。

たとえば、次の例を考えてみましょう。

console.log(5 != '5'); // false

この例では、!= 演算子が使用され、左辺に数値 5 が、右辺に文字列 '5' が指定されています。この場合、右辺の文字列は数値に変換され、比較が行われます。'5' は数値 5 に変換されるため、5 != 5 と同じ結果になります。つまり、この例では false がコンソールに出力されます。

!= 演算子は、左辺と右辺が等しくない場合に true を返します。つまり、== 演算子の反対の意味を持ちます。== 演算子と同様に、!= 演算子も型変換を伴うため、予期しない比較結果を生み出すことがあります。そのため、!= 演算子の代わりに、!== 演算子を使用することが推奨されています。!== 演算子は、値と型が完全に一致しない場合にのみ等しくないと判断するため、意図しない比較結果を回避できます。

!== 厳密に等しくない

以下は、!= 演算子と !== 演算子を使用して数値と文字列を比較するサンプルコードです。

console.log(5 != '5'); // false
console.log(5 !== '5'); // true

!== 演算子の方が安全なため、こちらをメインに利用しましょう。

< より小さい

比較演算子 < は、左辺が右辺よりも小さい場合に true を返します。数値や文字列などのさまざまな型の値を比較できます。比較の前には、両辺の値が同じ型に変換されます。

数値の比較の場合、< 演算子は単純な数値の比較を行います。

console.log(5 < 10); // true
console.log(10 < 5); // false

文字列の比較の場合、< 演算子はUnicodeコードポイントで比較を行います。つまり、2つの文字列の最初の文字のUnicodeコードポイントを比較し、同じであれば次の文字を比較します。このようにして、文字列の辞書順での大小を判定します。

console.log('apple' < 'banana'); // true
console.log('banana' < 'apple'); // false

> より大きい

比較演算子 > は、左辺が右辺よりも大きい場合に true を返します。< 演算子と同様に、さまざまな型の値を比較できます。比較の前には、両辺の値が同じ型に変換されます。

数値の比較の場合、> 演算子は単純な数値の比較を行います。

console.log(10 > 5); // true
console.log(5 > 10); // false

文字列の比較の場合、> 演算子はUnicodeコードポイントで比較を行います。つまり、2つの文字列の最初の文字のUnicodeコードポイントを比較し、同じであれば次の文字を比較します。このようにして、文字列の辞書順での大小を判定します。

console.log('banana' > 'apple'); // true
console.log('apple' > 'banana'); // false

<= 以下

比較演算子 <= は、左辺が右辺以下の場合に true を返します。< 演算子と同様に、さまざまな型の値を比較できます。比較の前には、両辺の値が同じ型に変換されます。

数値の比較の場合、<= 演算子は単純な数値の比較を行います。

console.log(10 <= 5); // false
console.log(5 <= 10); // true
console.log(5 <= 5); // true

文字列の比較の場合、<= 演算子はUnicodeコードポイントで比較を行います。つまり、2つの文字列の最初の文字のUnicodeコードポイントを比較し、同じであれば次の文字を比較します。このようにして、文字列の辞書順での大小を判定します。

console.log('apple' <= 'banana'); // true
console.log('banana' <= 'apple'); // false
console.log('apple' <= 'apple'); // true

>= 以上

比較演算子 >= は、左辺が右辺以上の場合に true を返します。> 演算子と同様に、さまざまな型の値を比較できます。比較の前には、両辺の値が同じ型に変換されます。

数値の比較の場合、>= 演算子は単純な数値の比較を行います。

console.log(10 >= 5); // true
console.log(5 >= 10); // false
console.log(5 >= 5); // true

文字列の比較の場合、>= 演算子はUnicodeコードポイントで比較を行います。つまり、2つの文字列の最初の文字のUnicodeコードポイントを比較し、同じであれば次の文字を比較します。このようにして、文字列の辞書順での大小を判定します。

console.log('apple' >= 'banana'); // false
console.log('banana' >= 'apple'); // true
console.log('apple' >= 'apple'); // true

---

関連記事

JavaScriptの記事一覧