2

我知道大多数语言中逻辑运算的结果是真、假或 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  

那么逻辑运算符的结果是什么?如果一个操作数是 0 或 1,那么它会按预期工作。如果两者都是非零且不是 1,则

  1. 在逻辑的情况下or,返回第一个操作数
  2. 在逻辑and的情况下,返回第二个操作数

这是一般规则吗?

我不知道的另一件事是运营商|

我尝试了运算符|并得到了不同的结果:

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 或未定义变量,那么它的行为就像 afalse如果它是其他任何东西,那么它就像一个true

在逻辑操作结束时,最后检查的值返回。

所以

6||2

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

操作结束,返回最后一个值。2 如果传递给另一个逻辑操作,它的工作方式与 true 相同。

编辑:这是一个错误的说法。6||2返回6,因为6行为true足以知道条件OR为真,而无需检查下一个值。

这真的是一样的方式

真||真

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

对于 6 && 0 && 2

First value 6 = true
Next value 0 = false

在此停止操作并返回最后检查的值:0。

该| 运算符是完全不同的东西,它只是对输入值的位执行逻辑 OR,正如 akp 的另一个答案所解释的那样。

于 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 回答