Je suis tombé sur la ligne suivante
hsb.s = max != 0 ? 255 * delta / max : 0;
Que signifient ?
et :
signifient dans ce contexte?
javascript
syntax
operators
conditional-operator
Inaimathi
la source
la source
Infinity
(causée par la division par zéro).Réponses:
Il est appelé l' opérateur conditionnel (qui est un opérateur ternaire ).
Il a la forme de
condition
:?value-if-true
:value-if-false
Considérez le
?
comme «alors» et:
comme «autre».Votre code est équivalent à
la source
addition
un opérateur binaire qui opère sur les expressions précédentes et suivantes (par exemple 1 + 2, le plus fonctionne sur 1 et 2), ou la négation est un opérateur unaire (par exemple -x où la valeur de x est annulée).Bien entre parenthèses pour plus de clarté, il est
ce qui signifie retourner soit
255*delta/max
si max! = 00
si max == 0la source
Ceci est probablement un peu plus clair lorsqu'il est écrit avec des crochets comme suit:
Ce qu'il fait, c'est évaluer la pièce dans les premières parenthèses. Si le résultat est vrai, la partie après le? et avant le: est retourné. S'il est faux, ce qui suit le: est retourné.
la source
?
est un opérateur ternaire. Cela fonctionne comme unif
en conjonction avec le:
!=
signifie pas égalAinsi, la forme longue de cette ligne serait
la source
? :
n'est-ce pas l'opérateur ternaire?var x= expression ? true:false
la source
?: est une condition à court terme
else {}
et desif(){}
problèmes. Votre code est donc interchangeable avec ceci:MDN - Opérateur conditionnel (ternaire)
la source
Soyez prudent avec cela. Un -1 est évalué comme vrai bien que -1! = Vrai et -1! = Faux. Croyez-moi, je l'ai vu arriver.
alors
-1 ? "vrai côté": "faux côté"
évalue le "vrai côté"
la source