【问题标题】:Any value that makes a JavaScript comparison always true?任何使 JavaScript 比较始终为真的值?
【发布时间】:2011-05-01 23:35:02
【问题描述】:

是否有任何 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。

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

【问题讨论】:

  • 在我看来,只有运算符重载和第一个参数是对象才有可能。 JS 中不存在运算符重载。你会接受像 Arg1.comparison(Arg2) 这样的东西而不是通用运算符吗?
  • 如果有一个比较运算符 always 返回true,那不是错误吗?因为它实际上不会比较任何东西?
  • @Itay Moav 不知道具体会是什么样子,但我欢迎你的代码,所以我可以试试。
  • @David Thomas 不完全是。您可以将该特殊的始终为真值存储在一个变量中,然后在您不希望它始终为真时更改该变量。

标签: javascript comparison operators


【解决方案1】:

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

returnTrue || testVariable < 10

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

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

【讨论】:

  • 这个接近了。您需要添加一个额外的变量,但它似乎可以完成这项工作。
【解决方案2】:

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

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 相同,则整个语句为假
  2. 如果 oldCompareValue 与 newCompareValue 不同,则整个陈述为真

在任何一种情况下,测试表达式的右侧部分的计算结果始终为 true,并且只有在左侧部分也通过时才输入 if。但是,对我来说,保持这一点似乎有些过分。

一旦你的逻辑到位,就可以进入一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2023-02-14
    • 1970-01-01
    • 2012-03-07
    • 2020-09-04
    • 2012-02-11
    • 2020-02-28
    相关资源
    最近更新 更多