DADU
DADU

Reputation: 7048

Any value that makes a JavaScript comparison always true?

Is there any JavaScript value that makes a comparison always true?

Example with lower than operator:

true < 10           true
false < 10          true
null < 10           true

Example with greater than operator:

true > 10           false
false > 10          false
null > 10           false

What I'm looking for:

alwaysTrue < 10     true
alwaysTrue > 10     true

I want to use this to make one part of an if statement return true by default and true or false when the first comparison value is changed.

This is probably not existent but I want to be completely sure.

Upvotes: 5

Views: 2809

Answers (3)

G M
G M

Reputation: 22449

Unfortunately, I could not find any. Having such an object would be very helpful when comparing missing dates for instance.

There are however values that are always false:

NaN > 10 // false
NaN < 10 // false
undefined < 10 // false
undefined > 10 // false

Hence their negation will be always true:

!(NaN > 10) // true
!(NaN < 10) // true
!(undefined < 10) // true
!(undefined > 10) // true

You can hence rewrite your statement using the negation:

value > 10

!(value < 10)

Upvotes: 0

sosc
sosc

Reputation: 154

I'm not exactly sure if this is what you are asking, but this is a way of doing it with a few more statements:

var rtn = true;

if (oldCompareValue != newCompareValue) {
   // next you'll want to insert your return expression
   // i'm not sure you've specified what this should be
   rtn = (newCompareValue > 10)? true: false;
}

return rtn;

You can also do this using the AND operator as you've requested:

rtn = true;

if ((oldCompareValue != newCompareValue) && true) {
   rtn = (newCompareValue > 10)? true: false;
}

return rtn;

The if statement does the following for us:

  1. if oldCompareValue is the same as newCompareValue then the whole statement is false
  2. if oldCompareValue is not the same as newCompareValue then the whole statement is true

In either case the right part of the test expression always evaluates to true, and you'll only enter the if when the left part passes as well. However, keeping that true in place seems excessive to me.

Once you got you're logic in place this can go into one line.

Upvotes: 1

Aaron Silverman
Aaron Silverman

Reputation: 22635

You may want to consider leveraging "or" in your condition with another variable that can trump whether it returns true or not.

returnTrue || testVariable < 10

This will always return true when returnTrue is set to true, otherwise it will fall back on the comparison. If you are just looking for a change in a variable you can do so by storing the old value. If you know it will never be null you can check on this, otherwise you can use the the "or" with a flag similar to above.

oldValue === null || currentValue === oldValue

Upvotes: 5

Related Questions