Ich bin auf die folgende Zeile gestoßen
hsb.s = max != 0 ? 255 * delta / max : 0;
Was bedeutet das ?
und :
in diesem Zusammenhang?
javascript
syntax
operators
conditional-operator
Inaimathi
quelle
quelle
Infinity
(verursacht durch Teilen durch Null) zu setzen.Antworten:
Es wird als bedingter Operator (der ein ternärer Operator ist ) bezeichnet.
Es hat die Form von :
condition
?value-if-true
:value-if-false
Stellen Sie sich das
?
als "dann" und:
als "sonst" vor.Ihr Code entspricht
quelle
addition
ein binärer Operator, der mit den vorhergehenden und folgenden Ausdrücken arbeitet (z. B. 1 + 2, das Plus mit 1 und 2), oder die Negation ist ein unärer Operator (z. B. -x) wobei der Wert von x negiert wird).Aus Gründen der Klarheit richtig in Klammern gesetzt, ist es
was bedeutet, entweder zurück
255*delta/max
wenn max! = 00
wenn max == 0quelle
Dies ist wahrscheinlich etwas klarer, wenn in Klammern wie folgt geschrieben wird:
Was es tut, ist das Teil in den ersten Klammern auszuwerten. Wenn das Ergebnis wahr ist, dann der Teil nach dem? und bevor das: zurückgegeben wird. Wenn es falsch ist, wird das Folgende zurückgegeben :.
quelle
?
ist ein ternärer Operator. Es funktioniert wie einif
in Verbindung mit dem:
!=
bedeutet nicht gleichDie lange Form dieser Linie wäre also
quelle
? :
Ist das nicht der ternäre Operator?var x= expression ? true:false
quelle
?: ist eine Kurzbedingung für
else {}
undif(){}
Probleme. Ihr Code ist also austauschbar:MDN - Bedingter (ternärer) Operator
quelle
Sei vorsichtig damit. A -1 ergibt true, obwohl -1! = True und -1! = False. Vertrau mir, ich habe es gesehen.
so
-1? "wahre Seite": "falsche Seite"
bewertet zu "wahrer Seite"
quelle