[英]What is wrong with this if statement logic in JavaScript?
if(stringName.charAt(0) != 'Q' || stringName.charAt(0) != 'W' || stringName.charAt(0) != 'E'){
SetID = "Yes";
}
上面的代码当我使用警报弹出 windows 时,My.String.charAt(0) 的值返回了正确的值,但我不知道为什么它会进入 if 语句并将 SetID 的值更改为Yes
我试图弄清楚它出了什么问题,但真的什么也看不到
SetID
初始化为No
你正在使用||
但你可能是说&&
...
现在的样子,永远都是true
。 “如果字符不是‘Q’,或者不是‘W’,或者不是‘E’,那么……”——即使它是这些字符之一,也不会是其他字符,因此表达式求值为true
。
让我们分解你的陈述。
MyString.charAt(0) != 'Q'
好的,如果不是 Q,那么它会继续。
||
因此,如果角色是Q,则沿着链继续。
MyString.charAt(0) != 'W'
至此,我们已经确定该字符不是 Q(在这种情况下运行SetID = "Yes"
),或者它是 Q。但是如果它是 Q,那么很明显它不是 W,因此下一个条件为真并运行SetID = "Yes"
。
你看? 不管是什么性格,都通过了考验。
我认为您打算使用&&
,而不是||
. 如果您使用&&
,则SetID = "Yes"
仅在字符为 NONE OF Q、W 或 E 时运行。
不是答案 [评论代码太多],而是使用 reg exp 的另一种可能的解决方案
var stringName = "Quick";
if( (/^[QWE]/).test(stringName) ){
SetID = "Yes";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.