Natknąłem się na następującą linię
hsb.s = max != 0 ? 255 * delta / max : 0;
Co ?
i co :
oznacza w tym kontekście?
javascript
syntax
operators
conditional-operator
Inaimathi
źródło
źródło
Infinity
(spowodowane dzieleniem przez zero).Odpowiedzi:
Nazywa się to Operatorem Warunkowym (który jest operatorem potrójnym ).
Ma postać
condition
:?value-if-true
:value-if-false
Pomyśl o tym
?
jako „wtedy” i:
jako „innym”.Twój kod jest równoważny z
źródło
addition
operator binarny, który działa na poprzedzających i następujących wyrażeniach (np. 1 + 2 plus działa na 1 i 2), lub negacja jest operatorem jednoargumentowym (np. -X gdzie wartość x jest zanegowana).Właściwie jest nawiasowany dla jasności
co oznacza zwrot albo
255*delta/max
jeśli max! = 00
jeśli max == 0źródło
Jest to prawdopodobnie nieco jaśniejsze, gdy zapisuje się w nawiasach w następujący sposób:
Dokonuje oceny części w pierwszych nawiasach. Jeśli wynik jest prawdziwy, to część po? i zanim: zostanie zwrócony. Jeśli jest to fałsz, zwracane jest to, co następuje:.
źródło
?
jest operatorem trójskładnikowym. Działa jakif
w połączeniu z:
!=
znaczy nie równa sięTak więc długa forma tej linii byłaby
źródło
? :
czy to nie jest trójskładnikowy operator?var x= expression ? true:false
źródło
?: jest warunkiem krótkiej ręki
else {}
iif(){}
problemami. Twój kod jest więc wymienny:MDN - operator warunkowy (trójskładnikowy)
źródło
Uważaj na to. A -1 ma wartość prawda, chociaż -1! = Prawda, a -1! = Fałsz. Zaufaj mi, widziałem, jak to się dzieje.
więc
-1? „true side”: „false side”
ocenia na „prawdziwą stronę”
źródło