2015-01-28 12 views
1

false 또는 x.y.z으로 설정할 수있는 변수가 있습니다.JavaScript 조건부 문에서 nullable 객체를 처리하는 방법

나는 이런 식으로 뭔가를 할 :

if (var1) { 
    if (var1.x.y.z === 1) { 
    // do stuff 
    } 
} else { 
    // do something if var1 OR var1.x.y.z === 1 is false 
} 

내가 문제 if 문 외부와 if 문 내부의 다른 코드를 복제 할 필요없이이 조건문을 설정하는 데 문제가 있습니다.

+0

'&&'두 가지 조건이 있습니까? – Bergi

+0

'x.y.z'가 존재하지 않으면'Uncaught TypeError' 예외가 발생합니다. –

+1

아니요, '&&'는 [단락 회로 평가] (https://en.wikipedia.org/wiki/Short-circuit_evaluation)를 수행하기 때문에. – Bergi

답변

1

!!을 사용해보십시오, 이것은 변수가 진실인지 거짓인지 평가합니다. 기본적으로 var1이 false가 아니라면 true입니다. var1이 문자 그대로 거짓이라면 "할 일"을하십시오.

편집 됨 .. 두 번째 테스트를 추가 할 수 있습니다.

if (!!var1 && var1.x.y.z === 1) { 
    // do stuff 
} else { 
    // do other stuff 
} 
+0

여기'!!'를 사용할 이유가 없습니다 – Bergi

+0

사용하지 않을 이유가 없습니다 !! 이리. – paulj