'Logical operators in JavaScript — how do you use them?

I don't understand how &&, ||, and ! work... both with bools and other data types. How do you use them?



Solution 1:[1]

All values in JavaScript are either “truthy” or “falsy”.

  • a && b evaluates to the first falsy operand,
  • a || b evaluates to the first truthy operand.

Both operators will not evaluate any operands after the one the return. If all operands don’t match, they will evaluate to the last one.

  • !a evaluates to true if a is falsy and false if a is truthy.

All values are truthy except the following, which are falsy:

  • null
  • undefined
  • false
  • +0
  • -0
  • NaN
  • 0n
  • ""
  • document.all

Solution 2:[2]

If you want to test that both of two conditions are truthy then use &&:

if (isX && isY)
{
     // Do something.
}

If you want to test that one or both of two conditions are truthy then use ||:

if (isX || isY)
{
     // Do something.
}

The ! inverts a boolean (a truthy value becomes false and vice versa).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Sebastian Simon
Solution 2