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

        SetID = "Yes";

    }

アラートを使用してウィンドウをポップアップすると、上記のコード My.String.charAt(0) の値は正しい値を返しますが、if ステートメント内に入り、SetID の値をに変更する理由がわかりませんYes

何が問題なのかを理解しようとしていますが、実際には何も見えません

SetIDに初期化されますNo

4

3 に答える 3

10

あなたは使用して||いますが、おそらく&&...

今のままで、これからもずっとtrue。「文字が 'Q' ではない、または 'W' ではない、または 'E' ではない場合、...」 — それがそれらの文字の 1 つであっても、他の文字ではないため、式は評価されます。にtrue

于 2012-04-06T13:47:14.197 に答える
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 のいずれでもない場合にのみ が実行されます。

于 2012-04-06T13:49:59.980 に答える
1

答えではありません[コメントのコードが多すぎます]が、正規表現を使用した別の可能な解決策

var stringName = "Quick";
if( (/^[QWE]/).test(stringName) ){
   SetID = "Yes";
}
于 2012-04-06T13:53:42.227 に答える