Point d'interrogation et deux points en JavaScript
je suis tombé sur la ligne suivante
hsb.s = max != 0 ? 255 * delta / max : 0;
que signifient ?
et :
dans ce contexte?
6 réponses
il est appelé opérateur conditionnel (qui est un opérateur ternaire ).
il a la forme de: condition
? value-if-true
: value-if-false
Penser à la ?
comme "alors" et :
comme "autre".
votre code est équivalent à
if (max != 0)
hsb.s = 255 * delta / max;
else
hsb.s = 0;
correctement mis entre parenthèses pour plus de clarté, il est
hsb.s = (max != 0) ? (255 * delta / max) : 0;
signifiant retour soit
-
255*delta/max
si max != 0 -
0
si max = = 0
tsl.S = max != 0 ? 255 * delta / max : 0;
? est un opérateur ternaire, il fonctionne comme un si en conjonction avec l' :
!= ne signifie pas
ainsi, la forme longue de cette ligne serait
if (max != 0) { //if max is not zero
hsb.s = 255 * delta / max;
} else {
hsb.s = 0;
}
ceci est probablement un peu plus clair lorsqu'il est écrit avec les crochets comme suit:
hsb.s = (max != 0) ? (255 * delta / max) : 0;
Ce qu'il fait est d'évaluer la partie dans la première crochets. Si le résultat est vrai, alors la partie après le ? et avant de le : est retourné. Si elle est fausse, alors ce qui suit : est retourné.
? :
n'est-ce pas l'opérateur ternaire?
var x= expression ? true:false
faites attention avec ça. Un -1 évalue à vrai bien que -1 != vrai et -1 != faux. Faites-moi confiance, je l'ai vu arriver.
donc
-1 ? "le vrai côté" : "false" côté
prend la valeur "vrai" côté