Logical operators in JavaScript — how do you use them?

Solution 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, it 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:

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

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