2010-06-03 6 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'; 

quelqu'un peut me dire ce que cela fait (seulement la partie où la variable est définie par une valeur. Je ne comprends pas ... ce sont les ?, : ont un rôle ici)? Je n'ai jamais vu une variable déclarée comme ça. Est-ce un paramètre de variable conditionnelle? si oui, comment ça marche?me aider à comprendre un réglante

working example

Répondre

10

Ceci est un exemple horrible abus de ternary operator.

L'utilisation d'un switch statement serait beaucoup plus agréable.

+5

Si vous ev eu plus de 1? dans une ligne de code, pensez-y un peu plus;) – bwawok

+0

ce qui est horrible à propos de cet exemple? – meo

+0

@meo juste que c'est extrêmement mauvais à lire et à modifier. –

4

Cette construction est assez courant dans les langues:

statement3 ? statement2 : statement1 

Il est utilisé inline conditionnelle, et il lit:

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

Il est un raccourci de:

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

et ainsi de suite

+2

"Shorthand" est discutable ... Je choisirais si/d'autre sur ce gâchis un jour :) – Matt

Questions connexes