2 つの質問から始めましょう:
最初の質問は、なぜ a && b が true を返し、b && a が 6 を返すのか
1 var user = 6;2 var both = true;3 4 console.log( user && both); //true5 console.log( both && user); //6
2 番目の質問は両方ともデクリメントを実行し、最終的に出力される値は 3 のままです
1 var user = false;2 var both = 3;3 4 console.log( user && both--); // false5 console.log(both); // 3
まず 3 つのレベルから理解します ( && を例に挙げます):
第一レベルの理解: オペランドが両方ともブール値である場合、結果は両方が true の場合にのみ true になり、それ以外の場合は false になります。
第 2 レベルの理解: && は true 値と false 値を操作できます。両方が true 値の場合は true 値が返され、それ以外の場合は false 値が返されます。ただし、trueの値はtrueに限定されず、falseの値もfalseに限定されません。以下の値はfalseに変換されます(その他の値はすべてtrue)
未定義
null。
0/-0
NaN
" "
jsでは&&演算を行うと結果は常にtrueかfalseではなく、現在の値になります。現在の値は数値、文字列などです。
最初の式が true の場合、2 番目の式の値がその結果として使用されます。この結果は変換された値ではなく、それ自体です。
最初の式が false の場合、最初の式の値が結果として使用されます。この結果は変換された値ではなく、それ自体です。
user = 6 both = math = 0 console.log( user && both); console.log( both && user); console.log( both && math); console.log( math && both);
理解の第 3 レベル: 短絡演算、演算プロセス、最初に左のオペランドの値を計算します。計算結果が false 値の場合、式全体の結果は false 値になります。 、左のオペランドの値は、数値の評価と同時に右の演算を停止します。左側のオペランドの結果が true の場合、結果全体は右側のオペランドの値に依存します。
短絡演算に関する注意:
&& および || 演算中、最初の式の値が演算全体の結果をすでに決定できる場合、2 番目の式は実行されません
&& 演算の場合最初の式の値が false である場合、演算結果全体が false であると判断されるため、最初の式は実行されず、そのため y-- は実行されず、y の値は 3
x = y = 3 console.log(x && y--); console.log(y);
のままです。 ||
に関して、最初の式の値が true の場合、結果は変換後のものではなく、最初の式の値そのものになります。
最初の式の値が false の場合、結果は変換後ではなく、2 番目の式の値そのものになります。
1 var user = true;2 var both = 10;3 4 console.log(user || ++both); //true5 console.log(both); //10
&& は || と全く同じ原理ですが、動作ルールが異なります。
りー
以上がjs の && と || の例を深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。