2

ほとんどの言語での論理演算の結果は、true、false、または1,0のいずれかであることを私は知っています。Javascriptで私は以下を試しました:

alert(6||5)  // => returns 6
alert(5||6)  // => returns 5
alert(0||5)  // => returns 5
alert(5||0)  // => returns 5
alert(5||1)  // => returns 5
alert(1||5)  // => returns 1
alert(5&&6)  // => returns 6
alert(6&&5)  // => returns 5
alert(0&&5)  // => returns 0
alert(5&&0)  // => returns 0
alert(-1&&5) // => returns 5
alert(5&&-1) // => returns -1  

では、論理演算子の結果は何ですか?1つのオペランドが0または1の場合、期待どおりに機能します。両方がゼロ以外で1以外の場合、

  1. 論理の場合or、最初のオペランドが返されます
  2. 論理の場合and、2番目のオペランドが返されます

これが一般的なルールですか?

私が知らないもう一つのことは演算子|です。

オペレーターを試しましたが、|さまざまな結果が得られました。

alert(5|8)  // => returns 13 
alert(8|5)  // => returns 13 
alert(-5|8) // => returs -5
alert(8|-5) // => returns -5
alert(0|1)  // => returns 1 
alert(1|0)  // => returns 1
alert(1|1)  // => returns 1

この演算子は実際に何をしますか?

4

2 に答える 2

4

javascriptは型付き言語ではないため、論理演算子で任意のオブジェクトを使用できます。このオブジェクトがnull、falseブール値、空の文字列、0、または未定義の変数のfalse場合は、それ以外の場合はaのように動作します。true

論理演算の最後に、最後にチェックされた値が返されます。

それで

6 || 2

Check first value -> "6"
6 = true
Go to next value -> "2"
2 = true

操作を終了し、最後の値を返します。2これは、別の論理演算に渡された場合にtrueと同じように機能します。

編集:それは間違ったステートメントでした。次の値をチェックする必要なしに条件が真であることを知るのに十分であるため、が6||2返されます。66trueOR

本当に同じです

true || true

Check first value -> "true"
Check next value -> "true"
return last value -> "true"

そして6&&0 && 2

First value 6 = true
Next value 0 = false

ここで操作を停止し、最後にチェックされた値0を返します。

| 演算子はまったく別のものであり、akpによる他の回答で説明されているように、入力値のビットに対して論理ORを実行するだけです。

于 2012-07-01T15:48:15.347 に答える
4

実際にあなたが導き出したのは、純粋なデジタル結果です...のように...

   3 in binary is 011......
   4 in binary is 100.....

   when u perform 3|4......

   it is equivalent to 011|100......i.e the OR operator which is the one of the bases of all logical operations

       011
       100

   will give 111 ie 7.............

   so u will get 3|4  as 7......

   hope u understand..
于 2012-07-01T15:50:42.827 に答える