JavaScript中的if语句逻辑有什么问题?

时间:2012-04-06 13:46:26

标签: javascript if-statement logic

if(stringName.charAt(0) != 'Q' || stringName.charAt(0) != 'W' || stringName.charAt(0) != 'E'){

        SetID = "Yes";

    }

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

我正试图弄清楚它有什么问题,实际上看不到任何东西

SetID初始化为No

3 个答案:

答案 0 :(得分:10)

您使用的是||,但您可能需要&& ...

现在的方式,它始终是true。 “如果角色不是'Q',或者它不是'W',或者它不是'E',那么......” - 即使它是其中一个角色,也不会是其他角色,所以表达式评估到true

答案 1 :(得分:1)

让我们打破你的陈述。

MyString.charAt(0) != 'Q'

好吧,如果它不是Q那么它会继续。

||

因此,如果字符 Q,请沿着链继续。

MyString.charAt(0) != 'W'

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

你知道吗?无论角色是什么,它都通过了测试。

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

答案 2 :(得分:1)

不是答案[评论的代码太多],而是使用reg exp

的另一种可能的解决方案
var stringName = "Quick";
if( (/^[QWE]/).test(stringName) ){
   SetID = "Yes";
}