繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM