ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript基礎講座で論理式の定義と使い方を詳しく解説

JavaScript基礎講座で論理式の定義と使い方を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-19 10:29:381600ブラウズ

論理演算子「&&」、「||」、「!」はブール算術演算を実行し、複数の関係式を組み合わせてより複雑な式を形成することがよくあります。

i. 論理 AND

"&&" 演算子は 3 つの異なるレベルから理解できます。最も単純な理解は、オペランドが両方ともブール値である場合、「&&」は 2 つのブール値に対してブール AND (AND) 演算を実行し、最初のオペランドと 2 番目のオペランドが両方とも true の場合にのみ true を返すということです。オペランドが false の場合、false を返します

"&&" は 2 つの関係式を接続するために使用されます

x == 0 && y == 0; //x と y が両方とも 0 の場合にのみ True が返されます
関係式は常に true または false を返すため、このように使用すると、「&&」自体も true または false を返します。関係演算子は「&&」 (および「||」) よりも高い優先順位を持っているため、このような式は括弧を必要とせずに安全に作成できます。

「&&」オペランドは必ずしもブール値である必要はありません。一部の値は「真の値」と「偽の値」とみなされる可能性があることに注意してください。 (false 値が false、null、未定義、0 -0、NaN および "" の場合、すべてのオブジェクトを含むすべての値とその他の値が true 値になります)。 「&&」の 2 番目の理解レベルは、「&&」が true 値と false 値に対してブール AND (AND) 演算を実行できるということです。両方のオペランドが true の場合は true 値が返され、それ以外の場合は少なくとも 1 つのオペランドが false になります。 JavaScript でブール値が使用されると、式ステートメントはそれを true または false の値として扱うため、実際には「&&」が常に true と false を返すわけではありませんが、それは大したことではありません。

上記の演算子は「真の値」と「偽の値」を返しますが、「真の値」と「偽の値」が何であるかについては説明していないため、詳しく説明します。 「&&」の第 3 レベルの理解。演算子は最初に左側のオペランドの値を計算します。つまり、最初に「&&」の左側の式を計算します。計算結果が偽の値の場合、式全体の結果も偽の値になる必要があります。したがって、「&&」は右側のオペランドを計算せずに、単純に左側のオペランドの値を返します。

var o = {
    x: 1
};
 var p = null;
 o && o.x; //=>1 : 1:0是真值,因此返回值是o.x
 p && p.x //= null :p是假值,因此将其返回,而并不计算p.x

これは、「&&」が正しいオペランドを計算しない可能性がある状況を理解するために重要です。上記のコードでは、変数 P の値が null であり、p.x が計算されると例外エラーがスローされます。 p p を計算する動作。条件付きでコードを実行します。たとえば、以下の 2 つのコードは同等です

 if (a == b) stop(); //只有a==b时才能调运stop()
 (a == b) && stop(); //同上

一般に、「&&」の右側の式に副作用がある場合 (代入、インクリメント、デクリメント、および関数呼び出し式) には特に注意してください。副作用のあるこれらの式の実行は、左側の演算子マウスの計算結果に依存するためです。

「&&」は、第 2 レベルと第 3 レベルの理解に従っていくつかの複雑な式操作を実行できますが、ほとんどの場合、「&&」は true と false の値に対するブール計算を実行するためにのみ使用されます。

ii. 論理 OR (||)

「||」演算子は 2 つのオペランドに対してブール OR (OR) 演算を実行します。いずれかのオペランドが true の場合は true を返し、両方のオペランドが false の場合は false を返します。

「||」演算子は、ほとんどの場合、「&&」のような単純なブール OR (OR) 演算を行うだけですが、最初に最初のオペランドの値を計算する、つまり「Back to」というより複雑な動作も行います。最初に左側の式を評価し、評価結果が true の場合は true 値を返し、そうでない場合は 2 番目の値を評価します。

「&&」と同様、右側で副作用のある式を明示的に使用しない限り、右側のオペランドに副作用のある式を含めることは避けるべきです。右側の式は評価されない可能性があります。

この演算子の最も一般的な使用方法は、一連の代替式から最初の true 値の式を選択することです。

//如果max_width已经定义了,则直接使用它。赋值在preferences对象中查找max_width
//如果没有定义它,则使用一个写死的常量。
var max =max_width || preferences.max_windth || 500;

この一般的な使用法は、通常、パラメーターのデフォルト値を提供する関数の本体内で使用されます。

//将o成功的属性复制到p中,并返回p
function copy(o, p) {
p = p || {}; //如果向参数p没有传入任何对象,则使用一个新创建对象。
//函数体内的主逻辑

iii. 論理 NOT (!)

「!」演算子は、単一のオペランドの前に置かれる単項演算子です。その目的は、オペランドのブール値を否定することです。

「&&」演算子や「||」演算子とは異なり、「!」演算子はまずオペランドをブール値に変換してから、そのブール値を否定します。つまり、「!」は常に true と false を返します。さらに、2 つの論理 NOT 演算を使用して、値のブール値を取得できます。

"!" は優先度が高く、オペランドと密接に関係しています。p && q をペアにしたい場合は、括弧を付ける必要があります。 p && q)。次のコード:

!(p && q) === !p || !q
 !(p || q) === !p && !q

p と q の任意の値に対して、これら 2 つの式は常に当てはまります。

以上がJavaScript基礎講座で論理式の定義と使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。