stieß ich auf die folgende ZeileFragezeichen in JavaScript
hsb.s = max != 0 ? 255 * delta/max : 0;
Was die ?
und :
in diesem Zusammenhang?
stieß ich auf die folgende ZeileFragezeichen in JavaScript
hsb.s = max != 0 ? 255 * delta/max : 0;
Was die ?
und :
in diesem Zusammenhang?
Es heißt Conditional Operator (das ist ein ternary operator).
Es hat die Form von: condition
? value-if-true
: value-if-false
Denken Sie an die ?
als "dann" und :
als "sonst".
Ihr Code entspricht
if (max != 0)
hsb.s = 255 * delta/max;
else
hsb.s = 0;
"?" ist nicht der ternäre Operator; "?:" ist der ternäre Operator. Sprechen über "?"Wie der ternäre Operator ist wie über Abbott ohne Costello, Laurel ohne Hardy, Cheech ohne Chong zu reden .... –
Ok, ok ... jetzt benutze ich ein mehrdeutiges Pronomen, glücklich? :) – Greg
sicher. ein gutes ternäres Operator verdient einen anderen .... –
? :
ist das nicht der ternäre Operator?
var x= expression ? true:false
Das ist ein Beispiel für seine Verwendung, aber es gibt tatsächlich eine kürzere Version Ihrer Anweisung für die Fälle, in denen Sie nur TRUE/FALSE wollen: Wenn 'expression' nur eine Variable mit einer Zahl oder einem String ist, "var x =! ! expression "wird es zu einem booleschen Ergebnis machen. –
Richtig für Klarheit klammerten, es ist
hsb.s = (max != 0) ? (255 * delta/max) : 0;
bedeutet Rückkehr entweder
255*delta/max
wenn max! = 00
wenn max == 0ist wahrscheinlich ein wenig klarer, wenn sie mit Klammern wie folgt geschrieben:
hsb.s = (max != 0) ? (255 * delta/max) : 0;
Was sie tut, ist das Teil in den ersten Klammern zu bewerten. Wenn das Ergebnis wahr ist, dann wird der Teil nach dem? und bevor das: zurückgegeben wird. Wenn es falsch ist, wird Folgendes zurückgegeben:
hsb.s = max! = 0? 255 * Delta/Max: 0;
? ein ternärer Operator ist, funktioniert es wie eine, wenn in Verbindung mit dem:
= bedeutet nicht gleich
würde Also, die lange Form dieser Linie
if (max != 0) { //if max is not zero
hsb.s = 255 * delta/max;
} else {
hsb.s = 0;
}
mit diesem vorsichtig. A -1 wird als wahr ausgewertet, obwohl -1! = Wahr und -1! = Falsch. Vertrau mir, ich habe es erlebt.
also
-1? "True side": "false side"
wertet auf "true side"
"In JavaScript ist ein ** truthy ** -Wert ein Wert, der berücksichtigt wird wahr wenn in einem Booleschen Kontext ausgewertet. Alle Werte sind truthy, es sei denn, sie sind als Falsy definiert (dh außer für false, 0, "", null, undefined und NaN). "Deshalb wird -1 als wahr bewertet. (Https: //developer.mozilla. org/de-DE/docs/Glossar/Truthy) – jobmo
Sieht Einstellung Sättigung zu vermeiden, um 'Infinity' (verursacht durch Division durch Null). –