What's the difference between ( | ) and ( || )?

前端 未结 7 1231
故里飘歌
故里飘歌 2020-12-01 14:08

What\'s the difference between | and || in Javascript?

Furthermore, what\'s the difference between & and &&<

7条回答
  •  孤城傲影
    2020-12-01 14:51

    In Javascript perspective, there is more to it.

    var a = 42;
    var b = "abc";
    var c = null;
    
    a || b;     // 42
    a && b;     // "abc"
    
    c || b;     // "abc"
    c && b;     // null
    

    Both || and && operators perform a boolean test on the first operand (a or c). If the operand is not already boolean (as it's not, here), a normal ToBoolean coercion occurs, so that the test can be performed.

    For the || operator, if the test is true, the || expression results in the value of the first operand (a or c). If the test is false, the || expression results in the value of the second operand (b).

    Inversely, for the && operator, if the test is true, the && expression results in the value of the second operand (b). If the test is false, the && expression results in the value of the first operand (a or c).

    The result of a || or && expression is always the underlying value of one of the operands, not the (possibly coerced) result of the test. In c && b, c is null, and thus falsy. But the && expression itself results in null (the value in c), not in the coerced false used in the test.

提交回复
热议问题