2014-03-29 3 views
0

나는 switch 문을 사용하는 스크립트를 작성 중이다. 변수를 선언 할 때 기본 부울 값 true, correct가 있습니까? 글쎄, switch 문에서 활용 될 때별로 그렇지 않다. 여기기본적으로 JavaScript 변수의 부울 값은 무엇입니까?

는 자바 스크립트를 내가 가지고있다 : 기본적으로http://codepen.io/anon/pen/IDLqd/

, 내가 뭘하려고 그들이 window.prompt에 입력되는 데이터에 따라 선호 목록 스타일의 유형을 사용자에게있다() 메소드를 호출합니다. 1, 2 또는 3을 입력하면 프롬프트의 지시에 따라 목록이 표시됩니다. 그러나 유효한 정수로 입력하지 않으면 변수 validInput은 부울 값 false로 설정됩니다.

여기에서 validInput 변수의 부울 값이 true인지 확인하려면 if 문을 실행하고 그렇지 않은 경우 많은 변수의 값을 화면에 출력하고 그렇지 않은 경우 " 잘못된 선택 ".

코드가 validInput을 if 문에서 false 값만 갖는 것으로 인식하는 이유는 무엇입니까? 다른 값이 프롬프트 창에 입력되면 false 값만 할당됩니까? 이 프로그램을 제대로 실행하려면 각 스위치의 경우 validInput 값을 true로 명시 적으로 정의해야합니다.

왜 이런가요? 누군가 설명해 줄 수 있니?

감사합니다. 아론

+3

선언되었지만 설정되지 않은 변수의 기본값은 "false", 즉'undefined == false','undefined! = true'이지만, 실제로는 false가 아닙니다. 즉'undefined! == false', 'undefined! == true'. – Dave

+0

당신의 경우 실행이 기본값으로 가고 유효성 검사를 false로 설정했기 때문에 미리 초기화하지 않았습니까? – pj013

+0

@ 데이브 : 나는 당신이 말하는 것을 얻습니다. 그래서 어떤면에서는 null로 간주 될 수 있고 null은 "허위"로 간주됩니다. undefined와 null의 차이점은 무엇입니까? 항상 내가 가지고있는 것과 같은 문장에서 사용되기 전에 항상 변수를 정의하는 것이 좋은 습관입니까? –

답변

3

자바는 동적 언어이며 은 기본 부울 값과 같은 것이 없습니다. 당신이 값을 사용하지 않고 변수를 정의 할 때

가 기본 값은 항상 undefined되어있다 : 그래서

var variable; // variable is undefined 

당신이 값을 설정해야합니다 :이 부울을 전환하려면

var variable = true; 
// or 
var variable = false; 

값을 입력하면 다음을 수행 할 수 있습니다.

variable = !variable; 
+0

고맙습니다. 그리고 저는 여러분이하는 말을 분명히 이해합니다. 그러나 마지막 줄을 변수! = 변수로 이해하지 못합니다. 왜 그 값을 토글하는 것입니까? 반대로 그것을 정의하는 것과 반대? 일종의 결코 끝나지 않는 오류를 만들 수는 없습니까? –

+0

+1. 이 말이 맞습니다. – Zafar

+1

@AaronBrewer 이것은 단지 부울 값을 변경하는 예입니다. 이는 애플리케이션의 어느 위치에서나 수행 할 수 있습니다 (예 : 일부 깃발의 상태를 변경합니다. – friedi

2

당신은 입력이

if (validInput == true) { 
    // Your code 
} 

if (validInput) { 
    // Your code 
} 

이 둘 사이의 차이점은 무엇입니까 것이 일의 일반적인 방법으로 유효한지 확인하는거야? validInputtrue 동일한 경우

첫 번째 검사 - 할 것 아무것도 (물론, 다른 거의 아무것도 - 당신이 가끔 있기 때문에 자바 스크립트의 형태 변환 알고리즘의 놀라운 결과를 가질 수 ==보다는 ===을 사용하지 않는 것,하지만 그건 또 다른 질문).

두 번째를 이해하려면 자바 스크립트의 "진실성"개념을 이해해야합니다. if 문의 조건에 값을 입력하면 javascript는 "truth-y"또는 "false-y"를 결정하고 그에 따라 작동합니다.

true은 사실이 아니며 0이 아닌 숫자, 비어 있지 않은 모든 문자열 및 모든 개체입니다. 다른 것들은 false, 0, "", nullundefined을 포함하여 허위입니다.

변수가 무언가로 설정 될 때까지 변수가 undefined이기 때문에 이들 중 마지막 것이 아마도 당신에게 가장 관련이 있습니다.

+0

이 James_pic에게 정말 고마워요! 나는 그 대답에 감사한다! :) –

+1

단지 타입 변환의 광기의 예를 들어주기 위해서 :'validInput'이 문자열로 발생한다면'validInput == true'는'validInput === '1''이 true 인 경우에만 true이고'validInput 'validInput! == '''만큼 진실입니다. – Robert

관련 문제