簡體   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