2012-04-06 3 views
0
if(stringName.charAt(0) != 'Q' || stringName.charAt(0) != 'W' || stringName.charAt(0) != 'E'){ 

     SetID = "Yes"; 

    } 

위의 코드는 My.String.charAt (0)의 값을 반환하는 창이 팝업으로 나타나지만 if 문 안에 들어가서 값을 변경하는 이유를 알지 못합니다. 난 아무것도에게자바 스크립트에서 if 문 로직이 잘못되었습니다.

SetID을 볼 수없는 정말 잘못이 무엇인지 알아 내려고 노력하고있어 Yes

에 SetID하면 ||를 사용하고 있지만, 당신은 아마 &&을 의미

+1

nipick : 실제로 stringName.charAt (0)을 변수에 저장하고 조회를 여러 번하는 대신 사용하십시오. – epascarello

+0

@epascarello 예 예. 실제 코드에 저장했습니다. D – Ali

답변

10

No에 초기화됩니다. ..

지금은 항상 true입니다. "문자가 'Q'가 아니거나 'W'가 아니거나 'E'가 아닌 경우 ..."— 해당 문자 중 하나라도 다른 문자가 없으므로 표현식이 평가됩니다 ~ true.

+0

OMG 얼마나 어리석은가요? 나는 그 논리를 다시 한번 생각해야했습니다. – Ali

1

진술을 세분화합시다.

MyString.charAt(0) != 'Q' 

그래, Q가 아니라면 계속됩니다. 문자 Q 인 경우

|| 

그래서 체인을 따라 계속합니다. 우리는 문자 하나가 Q (있는 경우 SetID = "Yes"가 실행이)가 아니거나 것을 설립 한이 시점으로

MyString.charAt(0) != 'W' 

는 Q.하지만이 Q 인 경우, 다음 분명히 그러므로, W 아니다 이 다음 조건은 참이고 SetID = "Yes"이 실행됩니다.

표시 되나요? 그 성격이 무엇이든, 그것은 시험을 통과합니다.

||이 아닌 &&을 사용하려고 한 것 같습니다. 당신이 &&를 사용하는 경우, 문자 W Q 또는 E

+0

감사합니다 아주 좋은 설명! – Ali

1

하지 대답을 [코멘트 너무 많은 코드] 아무도없는 경우 SetID = "Yes"에만 실행되지만, 다른 가능한 솔루션은 등록 특급

를 사용하여
var stringName = "Quick"; 
if((/^[QWE]/).test(stringName)){ 
    SetID = "Yes"; 
}