우선, 삼항 표현식은 if / else 구문을 대체하지 않습니다 . 이는 값 을 리턴 하는 if / else 구문과 같습니다 . 즉, if / else 절은 코드이고 삼항 표현식은 expression 이므로 값을 리턴합니다.
이것은 여러 가지를 의미합니다.
- 왼쪽에
=
반환 값이 할당 될 변수가있는 경우에만 삼항식을 사용 하십시오.
- 반환 된 값이 두 값 중 하나 일 경우 삼항 식만 사용하십시오 (또는 적합한 경우 중첩 식 사용).
- 표현식의 각 부분 (? 및 이후 :)은 부작용없이 값을 리턴해야합니다 (
x = true
모든 표현식이 마지막 값을 리턴 할 때 표현식 이 true를 리턴하지만 x가 리턴 된 값에 영향을주지 않고 x를 변경 함)
간단히 말해서 삼항식의 '올바른'사용은
var resultofexpression = conditionasboolean ? truepart: falsepart;
삼항식을 condition ? x=true : null ;
사용하여의 값을 설정하는 예제 대신 다음을 사용할 x
수 있습니다.
condition && (x = true);
이것은 여전히 표현식이므로 유효성 검사를 통과하지 못할 수 있으므로 더 나은 접근 방식은
void(condition && x = true);
마지막은 유효성 검사를 통과합니다.
그러나 다시 예상 값이 부울 인 경우 조건식 자체의 결과 만 사용하십시오.
var x = (condition); // var x = (foo == "bar");
업데이트
샘플과 관련하여 아마도 더 적합 할 것입니다.
defaults.slideshowWidth = defaults.slideshowWidth || obj.find('img').width()+'px';
condition ? x = true : null;
은 아마도로 작성해야합니다x = (condition ? true : null);
. 또한 자바 스크립트에서는null
false로 평가 되므로이 경우x = (condition);
동일한 결과를 얻을 수 있습니다.