JavaScriptの比較演算子と論理演算子を理解する
序章
コンピュータサイエンスの分野には、数理論理学の多くの基盤があります。 論理に精通している場合は、真理値表、ブール代数、および等式または差分を決定するための比較が含まれることをご存知でしょう。
JavaScriptプログラミング言語は、演算子を使用して、プログラミング内の制御フローを支援できるステートメントを評価します。
このチュートリアルでは、論理演算子について説明します。 これらは通常、条件ステートメント、if、else、else ifキーワード、および三項演算子で使用されます。 最初に条件ステートメントについて詳しく知りたい場合は、JavaScriptで条件ステートメントを作成する方法を参照してください。
比較演算子
JavaScriptには、指定された値が異なるか等しいか、および値が別の値よりも大きいか小さいかを評価するために使用できるいくつかの比較演算子があります。 多くの場合、これらの演算子は、変数に格納されている値とともに使用されます。
比較演算子はすべて、trueまたはfalseのブール(論理)値を返します。
次の表は、JavaScriptで使用できる比較演算子をまとめたものです。
| オペレーター | その意味 |
|---|---|
==
|
に等しい |
!=
|
等しくない |
===
|
型変換なしと厳密に等しい |
! ==
|
型変換なしとは厳密に等しくありません |
>
|
より大きい |
>=
|
以上 |
<
|
未満 |
<=
|
以下 |
各オペレーターについて詳しく見ていきましょう。
平等
等式演算子は、演算子のいずれかの側の値が等しいかどうかを測定します。
次のことを考えてみましょう。
let x = 3; x == 3;
3は3と同等であるため、受信される出力はtrueのブール値になります。
Outputtrue
代わりに、xが別の整数と等しいかどうかをテストすると、ステートメントがfalseであることが検証されたことを示す出力が返されます。
let x = 3; x == 5;
Outputfalse
この等価式を使用すると、文字列やブール値などの他のデータ型をテストすることもできます。
以下の文字列の例を使用します。
let shark = 'sammy'; shark == 'sammy'; shark == 'taylor';
Outputtrue false
最初の例では、文字列が同等であったため、式はtrueを返しました。 shark == 'taylor'の2番目のインスタンスでは、文字列が等しくなかったため、式はfalseを返しました。
注目に値するのは、==演算子は厳密な同等ではないため、同等と評価される数値と文字列を混合できることです。 次の例を考えてみましょう。
let x = 3; x == '3';
最初の行は数値データ型を使用し、2番目の行は文字列データ型に対してxをテストしますが、両方の値は3に等しく、受け取る出力は式が真であることを示します。
Outputtrue
この演算子はデータ型に厳密ではないため、たとえば、数値の代わりに文字列を入力するユーザーをサポートできます。 同等性をテストするためにデータ型を変換する必要はありません。
==演算子のような比較演算子を使用できる場合が多くあります。 たとえば、テストを採点するときに同等性をテストしたい場合があります。 そうすれば、与えられた答えが正しいかどうかを検証できます。
let answer = 10;
let response = prompt("What is 5 + 5?");
if (answer == response) {
console.log("You're correct!");
}
ここで、生徒がプロンプトが表示されたときに質問に答えて10と入力すると、正しいというフィードバックを受け取ります。
JavaScriptには比較演算子の潜在的なアプリケーションがたくさんあり、それらはプログラムのフローを制御するのに役立ちます。
==の例がいくつかある基盤ができたので、これから少し簡単に説明します。
不平等
!=演算子は不等式をテストして、演算子の両側の値が等しくないかどうかを判断します。
例を考えてみましょう。
let y = 8; y != 9;
この例では、8はが9と等しくないため、式はtrueと評価されます。
Outputtrue
falseと見なされる不等式のステートメントの場合、次のように、両側の2つの値が実際に等しい必要があります。
let y = 8; y != 8
Outputfalse
この2番目の例では、演算子の両側の2つの値が等しいため、式は真ではありません。
身元
===演算子は、2つの値が両方とも等しい値との等しいタイプであるかどうかを判別します。 これは、厳密な等式演算子とも呼ばれます。 これは、数値と文字列のデータ型を混在させることができないことを意味します。
次に例を示します。
let z = 4; z === 4; z === '4';
次の出力を受け取ります。
Outputtrue false
この例は、zが厳密にと4に等しい(4の数値が割り当てられているため)が、であることを示しています。 notは文字列'4'と厳密に同じです。
この演算子は厳密であるため、たとえばID演算子を使用する場合は、ユーザーが入力したデータをあるデータ型から別のデータ型に変換する必要がある場合があることに注意する必要があります。 これは、プログラム全体でデータ型の一貫性を保つのに役立つ場合があります。
非アイデンティティ
===と同様に、演算子!==は厳密な不等式を評価し、演算子の両側のオペランドの値とタイプの両方を考慮します。
次の例を確認します。
let a = 18; a !== 18; a !== '18'; a !== 29;
上記の出力は次のようになります。
Outputfalse true true
この例では、aは18と厳密に等しいため、不等式をテストしているため、最初の式はfalseと評価されます。 次の2つの例では、aは文字列'18'および数値29と等しくないと判断されるため、これら2つの式はtrueと評価されます(以降それらは等しくない)。
より大きい
JavaScriptの大なり記号は、数学からおなじみかもしれません:>。 これは、ある値(式の左側)が別の値(式の右側)よりも大きいかどうかを評価します。
上記の==演算子と同様に、greater than演算子は厳密ではなくであるため、文字列と数値を混在させることができます。
次の例を考えてみましょう。
let f = 72; f > 80; f > '30';
次の出力が表示されます。
Outputfalse true
最初の例では、72はより80より小さいため、最初の式はfalseと評価されます。 2番目の例では、72は実際には'30'より大きく、演算子は数値が文字列であることを気にしないため、式はtrueと評価されます。
以上
同様に、以上の演算子は、一方のオペランドがもう一方のオペランドのしきい値を満たしているかどうかを評価します。 この演算子は、>=として、より大きい(>)と等号(=)の間の一種の複合語として入力されます。
私たちの例:
let g = 102; g >= 90; g >= 103;
Outputtrue false
102は90よりも大きいため、90以上であると見なされます。 102は103よりも小さいため、102 >= 103と記載するのはfalseです。 90または103のいずれかが文字列データ型である場合、式も同じように評価されます。
未満
より小さい演算子は、より大きい演算子<のミラーバージョンとして表示されます。
次の例をデモンストレーションとして考えてください。
let w = 1066; w < 476; w < 1945;
Outputfalse true
ここで、1066は' 476より大きいため、式はfalseと評価されます。 ただし、1066は1945よりも小さいため、2番目のステートメントはtrueと評価されます。 この場合も、476または1945の値を文字列にすることもできます。
以下
大なり以上の反対である以下の演算子— <= —は、演算子の左側の値が右側の値以下であるかどうかを評価します。
ここにいくつかの例があります。
let p = 2001; p <= 1968; p <= 2001; p <= 2020;
Outputfalse true true
2001が1968以上であるため、最初の式はfalseと評価されます。 2番目の式では、変数と2001が等しい値であるため、出力はtrueになります。 3番目の式では、2001が2020よりも小さいため、出力もtrueになります。 この場合も、これらの値は'2001'のように文字列として表すこともでき、同じ方法で評価されます。
注:以下の演算子(<=)とJavaScriptの矢印関数(=>)を混同しないように注意してください。 チュートリアルJavaScriptの矢印関数についてで矢印関数の詳細をご覧ください。
これらの比較演算子がプログラムでどのように連携するかを理解するには、JavaScriptチュートリアルで条件ステートメントを作成する方法のgrades.jsの例を参照してください。
論理演算子
JavaScriptには、3つの論理演算子があり、2つ以上のプログラミングステートメントを接続して、true(「トゥルーシー」とも呼ばれます)またはfalse(「偽」)を返します。価値。 これらはブール(論理)型で最もよく使用されますが、任意のデータ型の値に適用できます。
これらの論理演算子は、以下の表に要約されています。
| オペレーター | 構文 | 説明 | |
|---|---|---|---|
| と | &&
|
両方のオペランドがtrueの場合、trueを返します
| |
| また | いずれかのオペランドがtrueの場合、trueを返します
| ||
| いいえ | !
|
オペランドがfalseの場合、trueを返します
|
これらの各演算子について詳しく見ていきましょう。
と
AND演算子は、2つのアンパサンド(&&)で表されます。左右のオペランドがtrueと評価された場合、trueを返します。
たとえば、ANDを使用すると、高品質で低価格であるかどうかを確認できます。
// High quality and low price are true const highQuality = true; const lowPrice = true; (highQuality && lowPrice);
Outputtrue
両方の変数がtrueであると評価されるため、括弧内のAND演算はtrueを返します。 変数のいずれかがfalseとして初期化された場合、&&式はfalseと評価されます。
また
OR演算子は、||の2つのパイプで表されます。オペランドの1つが真の場合、trueを返します。
この例では、何かが ' highQualityまたはlowPriceのいずれかであるかどうかを確認します。
// Only low price is true const highQuality = false; const lowPrice = true; (highQuality || lowPrice);
Outputtrue
2つの条件(highQualityまたはlowPrice)のいずれかがtrueであったため、操作全体がtrueを返します。 これは、両方の条件がfalseの場合にのみ、falseと評価されます。
いいえ
NOT演算子は、感嘆符— ! —で表されます。オペランドがfalseに設定されている場合は、trueを返し、その逆も同様です。
const highQuality = true; !(highQuality);
Outputfalse
上記のステートメントでは、highQualityの値はtrueです。 NOT演算子を使用して、hiqhQualityがfalseと評価されるかどうかを確認しています。 falseの場合、出力はtrueを返しますが、は trueであるため、出力はfalseを返します。
NOT演算子は、最初は理解するのが少し難しいです。 覚えておくべき重要な部分は、NOTは何かが偽であると評価されるかどうかをチェックしないということです。
結論
論理演算子は、JavaScriptプログラミングにおけるフロー制御の構成要素です。 これらの演算子を効果的に使用すると、ステートメントを評価し、ステートメントが真であるか偽であるかに基づいて次の段階に進むプログラムを開発するのに役立ちます。
JavaScriptの詳細については、JavaScriptシリーズのコーディング方法とJavaScriptタグをご覧ください。