【问题标题】:What is wrong with this if statement logic in JavaScript?JavaScript 中的 if 语句逻辑有什么问题?
【发布时间】:2012-04-06 13:46:26
【问题描述】:
if(stringName.charAt(0) != 'Q' || stringName.charAt(0) != 'W' || stringName.charAt(0) != 'E'){

        SetID = "Yes";

    }

当我使用警报弹出窗口时,上面的代码 My.String.charAt(0) 的值返回正确的值,但我不知道为什么它进入 if 语句并将 SetID 的值更改为Yes

我正试图弄清楚它有什么问题,但真的什么都看不到

SetID 被初始化为No

【问题讨论】:

  • nipick:您确实应该将stringName.charAt(0) 存储在一个变量中并使用它而不是多次查找。
  • @epascarello 是的,我确实将它存储在我的真实代码中:D

标签: javascript if-statement logic


【解决方案1】:

您使用的是||,但您的意思可能是&& ...

现在的方式永远是true。 “如果字符不是'Q',或者不是'W',或者不是'E',那么……”——即使它是这些字符之一,也不会是其他字符,所以表达式计算到true

【讨论】:

  • 天哪,我真的是多么愚蠢,我应该再次想到这个逻辑。
【解决方案2】:

让我们分解你的陈述。

MyString.charAt(0) != 'Q'

好的,如果不是 Q 则继续。

||

所以如果字符 Q,继续沿着链。

MyString.charAt(0) != 'W'

到目前为止,我们已经确定字符不是 Q(在这种情况下运行SetID = "Yes"),或者它是 Q。但如果它是 Q,那么显然它不是 W,因此下一个条件为真并运行SetID = "Yes"

你看到了吗?不管是什么角色,都能通过考验。

我认为您的意思是使用&&,而不是||。如果您使用&&,则SetID = "Yes" 仅在字符不是 Q、W 或 E 时运行。

【讨论】:

    【解决方案3】:

    不是一个答案[太多代码无法评论],而是另一种使用 reg exp 的可能解决方案

    var stringName = "Quick";
    if( (/^[QWE]/).test(stringName) ){
       SetID = "Yes";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多