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タグをご覧ください。