2010-06-03 4 views
2
var fmt = document.documentElement.clientWidth; 
     var cls = (fmt<=240)?'pda_ver':(fmt>240&&fmt<=320)?'pda_hor':(fmt>320&&fmt<=640)?'screen_ultralow':(fmt>640&&fmt<=800)?'screen_low':(fmt>800&&fmt<=1024)?'screen_med':(fmt>1024&&fmt<=1280)?'screen_high':'screen_wide'; 

사람이 (변수가 값으로 설정되어 단지 부분을 무엇을 말해 줄 수있다. 이해가 안 ... ? 무엇인지, : 여기에 역할이)? 나는 그처럼 선언 된 변수를 본 적이 없다. 이것은 조건부 변수 설정입니까? 그렇다면 어떻게 작동합니까?나 설정 변수를 이해하는 데 도움이

working example

답변

10

이것은 ternary operator의 학대의 끔찍한 예입니다.

switch statement을 사용하면 훨씬 더 좋을 것입니다. 조건을 인라인하는 데 사용됩니다

statement3 ? statement2 : statement1 

, 그리고 그것을 읽습니다 :

+5

ev 1 이상 가지고 있니? 코드 줄에서 좀 더 생각해보십시오.) – bwawok

+0

이 예제에 대해 끔찍한 것은 무엇입니까? – meo

+0

@meo 단지 읽고 수정하는 것은 대단히 어렵습니다. –

4

이 구조는 언어 다소 일반적인

if (statement3) { 
    statement2; 
} else { 
    statement1; 
} 
1

그건의 단축형

var cls; 
if (fmt <= 240) { 
    cls = 'pda_ver'; 
} else { 
if (fmt > 240 && fmt <= 320) { 
    cls = 'pda_hor'; 
} else { 
.... 

을 등등

+2

"속기"가 논쟁의 여지가 있습니다. – Matt

관련 문제