2010-05-25 5 views
0

else를 상관시키는 방법을 제어하는 ​​방법은 무엇입니까?javascript - if/else if/else를 제어하는 ​​방법

예 : C와 D가 B에 관련되지 않습니다 확인

if X = 1 { // A 
    if Y > 1 { // B 
     gothere(); 
    } 
} 
else if X < 1 { // C 
    gohere(); 
} 
else { // D 
    gonowhere(); 
} 

방법을 만들기 위해 ???

here's 또 다른 예 :만큼 당신이 외부 else 상관 관계되지 않은 외부 if 문 주위에 괄호, 당신은 내부 if을 보장합니다 배치 할

if xxx { 

    ... 

FM_log(7,"vList.length = "+vList.length); 

if (skippingAvancado) 
    if (vList.length > 1)   
    changeVillage(); 
else { 
    if (skipcounter >= maxSkipCount) { 
     FM_log(7,"ROTINA ANTIGA SKIPCOUNTER"); 
     changeVillage(); 
    } 
} 
else { 
+0

당신은하지 않습니까? 그것은 if-else if-else의 핵심입니다. {}를 올바르게 사용하십시오. – Intelekshual

+0

전체 코드 블록을 포함하십시오. 매달린'else {'중 일부는 빠져있다. –

답변

1

이것은 dangling else 문제입니다. 모호하며 언어는 바인딩 할 구문을 선택할 수 있습니다. (모든 경우) 대부분의 언어 그룹의 경우 가장 가까운에 그렇지 않으면, 그렇게 될 것이라고는 실제로

if(foo) 
    if(bar) 
     baz; 
    else 
     bazz; 

당신은 당신이 당신의 첫 번째 예에서와 마찬가지로 모호성이 없어 확인하기 위해 괄호를 사용하여 항상해야한다. 첫 번째 예제에서 중괄호를 제거한 경우 C 및 D는 A 대신 B에 첨부됩니다. 당신이 그들을 포함했기 때문에, 블록은 당신이 원하는대로 작동합니다.

0

:

if (X == 1) { // A 
    if (Y > 1) { // B 
     gothere(); 
    } 
} 

에서 귀하의 두 번째 예를 들어, if 첫 번째 주위에 대괄호를 추가하여 내측 if의 범위가 올바르게 설정되도록하십시오 :

if (skippingAvancado) { 
    if (vList.length > 1)   
    changeVillage(); 
} 
+0

나는이 말을 더 잘 표현할 수 있다고 생각한다. –

0

그것은 다른 논리가 속한 간단한 논리입니다. 올바른 대괄호와 중첩을 사용하여 제어 할 수 있습니다.

+0

답변보다 댓글이 더 많습니다. –

0

첫 번째 예에서 C와 D는 B와 관련이 없습니다. if (A)의 else 초입니다. 이것은 중괄호에 의해 보장됩니다. 두 번째 예에서는 else 아마에 해당됩니다 if (else 조항 가장 가까운 가능한 if에 일치), 당신이 원하는 동작을 보장하기 위해

if (vList.length > 1)   
    changeVillage(); 

주위에 괄호를 추가해야하므로.

0

당신이 완전히 if/else 구조가 또는 블록 문없이 작동 방법을 제어 할 수 없어처럼 나는 다음과 같은 제안 소리 때문에 :

  • 항상 블록화 {/*...*/} 내부의 문을 배치합니다. 이렇게하면 여러 문장이 정확하게 그룹화됩니다.
  • 적절한 들여 쓰기를 사용하십시오 (수동으로, IDE를 통해 또는 jsbeautifier.org와 같은 도구를 통해 1 /). 이렇게하면 어떤 문장이 함께 소속되는지 시각적으로 알 수 있습니다. {을 쓸 때마다 들여 쓰기가 증가하고, }을 쓸 때마다 줄이면됩니다.이처럼

:

| | | | 
if (foo){ // if1 
    if (bar){ //if2 
     ... 
    } else if (foobar) { //elseif if2 
     if (foobarfoo) { //if3 
      ... 
     } // end if3 
    } // end if2 
} else { //else if1 
    ... 
} // end if1 
| | | | 

가 실패 제대로 그룹 당신이 문은 일부 브라우저에서 당신에게 디버그 지옥을주는 잘못된 그룹으로 이어질 것입니다.

관련 문제