JavaScript で文字列の同等性を確認する
JavaScript には、文字列の同等性をチェックするために使用できる 4つの演算子があります。これらの演算子は比較演算子と呼ばれます。
- 厳密な等号(
===
):厳密な等号(トリプル等号演算子とも呼ばれます)は、変数の値とそのデータ型をチェックします。これらの両方が等しい場合は、true
のみを返し、そうでない場合はfalse
を返します。 - 厳密に等しくない(
!==
):これは厳密に等しいの反対です。値またはデータ型のいずれかが一致しない場合、true
を返します。それ以外の場合は、false
。 - 等しい(
==
):二重等号は変数の値のみをチェックします。値が一致する場合はtrue
を返し、一致しない場合はfalse
を返します。変数の型は関係ありません。 - 等しくない(
!=
):これは等しい(==
)の反対です。データ型に関係なく、変数内の値が一致しない場合にのみtrue
を返します。値が互いに一致する場合、false
を返します。
これらの演算子は、文字列の同等性をチェックするためだけでなく、他のデータ型の同等性をチェックするためにも使用されます。これらの 4つの演算子から、ユースケースに応じて文字列の同等性をチェックするのに最適な演算子を見つけましょう。
3 番目と 4 番目の演算子、つまり ==
と!=
は、他のプログラミング言語でもかなり一般的です。ただし、JavaScript での動作方法は、他の言語とは少し異なります。
JavaScript で文字列の等式に演算子を使用する場合
JavaScript に関連して、以下は ===
または ==
演算子のいずれかを使用できるいくつかのユースケースです。
- 比較する値が
true
またはfalse
のいずれかの値である可能性がある場合は、==
ではなく===
を使用してください。 - 比較する値がこれらの特定の値(
0
、""
、または[]
-空の配列)のいずれかである可能性がある場合は、==
の代わりに===
を使用します。 - それ以外の場合は、
==
を使用しても安全です。安全であるだけでなく、コードを簡素化し、読みやすさを向上させます。
Strict not equal(!==
)および Not equal(!=
)演算子を使用する場合も、上記と同じルールが適用されます。特定のルールの詳細については、ES5 仕様の 11.9.3セクションを参照してください。
例を使用して JavaScript の文字列の同等性を理解する
いくつかの例を取り上げて、これらのことを詳しく理解しましょう。
この例では、name_1
と name_2
の 2つの変数を使用しています。どちらも文字列値として"adam"
を取ります。次に、上記の各演算子を適用して、得られる出力を見てみましょう。
ここでは、それぞれ異なる比較演算子を表す 4つの if
および else
ステートメントを使用しました。name_1
変数と name_2
変数の値とデータ型は同じであるため、トリプルイコールまたは厳密なイコール演算子(===
)は出力として True
を出力します。また、両方の変数の値が同じであるため、二重に等しい ==
も True
を出力します。
let name_1 = "adam";
let name_2 = "adam";
// Strict Equal
if(name_1 === name_2) console.log("True");
else console.log("False");
// Equal
if(name_1 == name_2) console.log("True");
else console.log("False");
// Strict not equal
if(name_1 !== name_2) console.log("True");
else console.log("False");
// Not equal
if(name_1 != name_2) console.log("True");
else console.log("False");
出力:
True
True
False
False
Strict not equal(!==
)演算子と not equal(!=
)演算子を使用すると、値自体が両方の変数で同じであるため、両方とも出力として False
を出力します。
以下は、文字列と整数を比較する別の例です。ここでは、文字列値である"80"
の値を持つ変数 str
があります。別の変数 num
があり、これには"80"
の整数値が含まれています。これらの変数は両方とも異なるデータ型で同じ値を持っているので、それらにさまざまな比較演算子を使用するとどうなるか見てみましょう。
let str = "80";
let num = 80;
// Strict Equal
if(str === num) console.log("True");
else console.log("False")
// Equal
if(str == num) console.log("True");
else console.log("False")
// Strict not equal
if(str !== num) console.log("True");
else console.log("False")
// Not equal
if(str != num) console.log("True");
else console.log("False")
出力:
False
True
True
False
最初の例と同様に、4つの if
ステートメントと else
ステートメントもあり、それぞれが異なる比較演算子を表しています。
Strictequals または tripleequals(===
)を使用している場合、出力として False
が得られます。その理由は、値が同じでもデータ型が異なるためです。ただし、double equals(==
)を使用すると、出力として True
が得られます。doubleequals は値のみをチェックし、タイプはチェックしないためです。
また、Strict not equal(!==
)を使用している場合、文字列値"80"
が整数値 80
と等しくないため、出力として True
が取得されます。したがって、True
を返します。
最後に、等しくない(!=
)演算子は、2つの変数の値のみを比較します。True
を出力するには、値が異なる必要があります。この場合、値は同じであるため、False
を返します。