JavaScriptでは、次の関係演算子と等価演算子を使って数値を比較できます。
| 比較 | 演算子 |
|---|---|
| より大きい | a > b |
| 以上 | a >= b |
| より小さい | a < b |
| 以下 | a <= b |
| (厳密な)等価 | a === b |
| (厳密な)非等価 | a !== b |
比較の結果は常に真偽値で、trueかfalseのどちらかになります。
1 < 3;
// => true
2 !== 2;
// => false
1 === 1.0;
// => true
// All numbers are floating-points, so this is different syntax
// for the exact same value.
JavaScriptでは、上記の比較演算子を使って文字列を比較することもできます。 その場合は、辞書順(辞書式順序)で比較されます。 すべての文字の正確な順序の一覧はこちらにあります。
'Apple' > 'Pear';
// => false
'a' < 'above';
// => true
'a' === 'A';
// => false
数値を含んでいるように見えても文字列型である2つの変数を比較するときは、注意が必要です。
辞書順のため、結果はNumber型の値を比較したときとは同じになりません。
10 < 2;
// => false
'10' < '2';
// => true (because "1" comes before "2")
文字列を比較するもう一つの方法は、localeCompareメソッドです。 文字列の比較方法を調整するためのさまざまなオプションを設定できます。
JavaScriptで等しいかどうかを調べるときに使う、イコール3つの記号が気になるかもしれません。
===は_厳密等価_を調べるもので、型変換は行われず、異なる型の値は常に等しくないと見なされます。
'3' === 3;
// => false
// The value on the left has type string, the value on the right
// has type number.
1 === 1n;
// => false
// The value on the left has type number, the value on the right
// has type bigint.
JavaScriptで等しいかどうかを調べるには、===と!==を使うのがおすすめです。
==と!=という記号もあり、これは_緩い等価_を調べるものです。
比較を行う前に暗黙の型変換が適用されるため、避けるべきです。
このような場合の結果は予測しづらく、ときに予想外のものになります。
詳しくはこちらで読むことができます。
0 == false;
// => true
理論上は、異なる型の値(例:"1" < 2)を比較することもできます。
その場合、結果がtrueかfalseかを判断するために、値は暗黙的に変換されます。
緩い等価を調べる場合と同様に、先ほど述べたのと同じ理由で、これもおすすめしません。
では、代わりにどうすればよいのでしょうか? 明示的な型変換を適用します。 そうすれば、比較を行う前に値が正しい型であることを保証できます。 その結果、コードは理解しやすく、エラーも起こりにくくなります。