【问题标题】:Javascript logical operators and resultsJavascript 逻辑运算符和结果
【发布时间】:2012-07-01 15:43:31
【问题描述】:

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

这个操作符实际上是做什么的?

【问题讨论】:

    标签: javascript operators logical-operators


    【解决方案1】:

    由于 javascript 不是类型化语言,因此任何对象都可以用于逻辑运算符,如果此对象为 null、false 布尔值、空字符串、0 或未定义变量,则它的行为类似于 false否则就像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 在另一个答案中所解释的那样。

    【讨论】:

    • 有什么资源可以支持这个答案吗?
    【解决方案2】:

    其实你得到的是纯数字的结果...比如...

       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..
    

    【讨论】:

    • 欢迎...
    猜你喜欢
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多