2011-04-13 2 views
0

자바 스크립트를 처음 사용하고 겉으로보기에는 간단한 if/else 문과 관련된 문제가 있습니다.간단한 자바 스크립트가 작동하지 않는 경우

사람은 (필자는 다른 부분에 결코) 아래가 (임 내 머리를 당겨)하시기 바랍니다 작동하지 않는 이유는 제가 항상 '더'경고를 얻을

var is_expanded = false; 
if (is_expanded==false) { 
    alert('no'); 
    is_expanded = true; 
} else { 
    alert('yes'); 
} 

를 알려 수 있습니다.

도움을 청합니다.

답변

1

이전 코드 줄은 var is_expanded = false; 입니다. 즉 if (is_expanded==false)은 항상 true으로 평가됩니다.

출력 내용이 그대로 출력됩니다. 너는 무엇을 기대 했는가?

다음 번에 동일한 메서드를 호출 할 때 is_expanded의 값은 첫 번째 코드 줄로 인해 false으로 다시 설정됩니다. 그런 다음 다시 경고합니다. no

9

이것은 설계대로 작동합니다.

if라고 말하면 상태가 확인됩니다. 그런 다음 올바른 블록으로 이동합니다.이 경우에는 "아니오"로 경고합니다.

조건이 블록 실행 후 다시 평가되지 않습니다. 그것은 내가 알고있는 언어가 아닌 if 문이 작동하는 방식이 아닙니다.

원하는 작업에 따라 while 루프와 같이 다른 패턴과 구조가 도움이 될 수 있습니다. 어쩌면 이것을 위해 필요한 실제 사용 사례를 보여줄 수 있습니다.

2

if 문 앞에 false으로 설정 했으므로 is_expanded은 항상 false과 같기 때문입니다.

if 문 앞에 is_expandedtrue이 아니면 예외가 아닙니다.

1

그건 정상입니다. 변수 is_expandedfalse으로 설정 했으므로 if 문에서 항상 alert('no'); 부분을 입력하고 있습니다. 변수를 true로 설정했지만 더 이상 if 문이 실행되지 않습니다.

1
var is_expanded = false; 
if (is_expanded==false) { 
    alert('no'); 
    is_expanded = true; 
} else { 
    alert('yes'); 
} 

축하합니다! 코드가 완벽하게 작동하므로 머리카락을 꺼내지 마십시오.

IF/ELSE의 성격은 중 하나이며 패스 당 하나의이 발생합니다. 따라서 코드는 is_expanded이 FALSE인지 여부를 확인합니다. false이면 IF 부분을 실행합니다. 그렇지 않으면 ELSE 부분을 실행합니다.

영어로 읽기만하면됩니다. 이 블록을 검사 후에는 블록의 하나의 내부 변수의 값을 변경하더라도, 상관되지

If something, do this. Otherwise, do something else

이 때문에 이동한다.

관련 문제