Javascript逻辑运算符和结果

时间:2012-07-01 15:43:31

标签: javascript operators logical-operators

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

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

  1. 如果是逻辑or,则返回第一个操作数
  2. 如果是逻辑and,则返回第二个操作数
  3. 这是一般规则吗?

    我不知道的另一件事是运算符|

    我尝试过操作符|并获得了不同的结果:

    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
    

    该运营商实际上做了什么?

2 个答案:

答案 0 :(得分:4)

由于javascript不是类型化语言,因此可以在逻辑运算符上使用任何对象,如果此对象为null,则为false boolean,空字符串,0或未定义变量,则其行为类似于false if它只是一个true

在逻辑运算结束时,最后一个检查值返回。

所以

6 || 2

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

操作结束,返回最后一个值。如果传递给另一个逻辑操作,它将与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。

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

答案 1 :(得分: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..