2012-11-26 1 views
1
을 확인하기 전에 정의되지 않은 검증 할 필요

가능한 중복 :
Javascript conditional order evaluation여러 조건 : 다른 조건

는 어떻게하면 문에 여러 조건 밖으로 이동합니까?

if(bacon && bacon == "crispy") { 
    self.eat(bacon); 
} 

bacon 만약 존재하지 않는, 그것은 여전히 ​​bacon는 "바삭"인지 확인하려고합니다?

답변

5

아니요, short-circuit evaluation을 사용하므로 LHS를 평가할 경우 RHS를 평가할 필요가 없다는 의미이므로 그렇지 않습니다. 이것은 매우 자주 자바 스크립트에 이용된다

...

foo = foo || "bar"; 

footruthy 다음 조건이 값을 할당됩니다 truefoo 것으로 알려져합니다 (좌) 인 경우

(이러한 조건 마지막으로 평가 된 표현식을 리턴하십시오.) foo 경우

그러나 falsy, 그것은 RHS 식을 평가합니다 다음 foo에 그 결과를 할당합니다.

0

& & 연산자는 JavaScript의 단락 연산자로, 첫 번째 조건이 거짓 일 경우 나머지 문이 평가되지 않도록합니다.