有任何值可以使 JavaScript 比较始终为真吗?

问题描述 投票:0回答:3

是否有任何 JavaScript 值可以使比较始终为真?

低于运算符的示例:

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

大于运算符的示例:

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

我在寻找:

alwaysTrue < 10     true
alwaysTrue > 10     true

我想用它来使 if 语句的一部分默认返回 true,并在第一个比较值更改时返回 true 或 false。

这可能不存在,但我想完全确定。

javascript comparison operators
3个回答
5
投票

您可能需要考虑在您的条件中利用“或”与另一个变量,该变量可以胜过它是否返回 true 。

returnTrue || testVariable < 10

当 returnTrue 设置为 true 时,这将始终返回 true,否则它将回退到比较。如果您只是寻找变量的更改,则可以通过存储旧值来实现。如果您知道它永远不会为空,您可以检查这一点,否则您可以使用带有类似于上面的标志的“或”。

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

1
投票

我不太确定这是否是您所要求的,但这是一种通过更多语句来实现的方法:

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;

您也可以根据您的要求使用 AND 运算符来执行此操作:

rtn = true;

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

return rtn;

if 语句为我们做了以下事情:

  1. 如果 oldCompareValue 与 newCompareValue 相同,则整个语句为 false
  2. 如果 oldCompareValue 与 newCompareValue 不同,则整个陈述为 true

无论哪种情况,测试表达式的右侧部分始终计算为 true,并且只有当左侧部分也通过时,您才需要输入 if。然而,在我看来,保持这一事实似乎有些过分了。

一旦你掌握了逻辑,就可以将其写成一行。


0
投票

不幸的是,我找不到任何东西。例如,在比较缺失的日期时,拥有这样的对象将非常有帮助。

然而,有些值始终是

false

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

因此他们的否定将永远是

true
:

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

因此,您可以使用否定重写您的陈述:

value > 10

!(value < 10)
© www.soinside.com 2019 - 2024. All rights reserved.