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

前端 未结 7 1235
故里飘歌
故里飘歌 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:47

    Another difference is that || uses shortcut evaluation. That is, it only evaluates the right side if the left side is false (or gets converted to false in a boolean context, e.g. 0, "", null, etc.). Similarly, && only evaluates the right side if the left side is true (or non-zero, non-empty string, an object, etc.). | and & always evaluate both sides because the result depends on the exact bits in each value.

    The reasoning is that for ||, if either side is true, the whole expression is true, so there's no need to evaluate any further. && is the same but reversed.

    The exact logic for || is that if the left hand side is "truthy", return that value (note that it is not converted to a boolean), otherwise, evaluate and return the right hand side. For &&, if the left hand side is "falsey", return it, otherwise evaluate and return the right hand side.

    Here are some examples:

    false && console.log("Nothing happens here");
    true || console.log("Or here");
    false || console.log("This DOES get logged");
    "foo" && console.log("So does this");
    
    if (obj && obj.property) // make sure obj is not null before accessing a property
    

提交回复
热议问题