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
答案 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";
}