Saya menemukan baris berikut
hsb.s = max != 0 ? 255 * delta / max : 0;
Apa maksud ?
dan tujuan :
dari konteks ini?
javascript
syntax
operators
conditional-operator
Inaimathi
sumber
sumber
Infinity
(disebabkan oleh divide-by-zero).Jawaban:
Ini disebut Operator Bersyarat (yang merupakan operator ternary ).
Ini memiliki bentuk
condition
:?value-if-true
:value-if-false
Pikirkan
?
sebagai "lalu" dan:
sebagai "lain".Kode Anda setara dengan
sumber
addition
operator biner yang beroperasi pada ekspresi sebelum dan sesudahnya (mis. 1 + 2 plus beroperasi pada 1 dan 2), atau negasi adalah operator unary (mis. -X di mana nilai x dinegasikan).Dipasangkan dengan benar untuk kejelasan, itu
artinya kembali juga
255*delta/max
jika maks! = 00
jika maks == 0sumber
Ini mungkin sedikit lebih jelas ketika ditulis dengan tanda kurung sebagai berikut:
Apa yang dilakukannya adalah mengevaluasi bagian dalam tanda kurung pertama. Jika hasilnya benar maka bagian setelah? dan sebelum: dikembalikan. Jika salah, maka yang berikut: dikembalikan.
sumber
?
adalah operator ternary. Ini bekerja sepertiif
dalam hubungannya dengan:
!=
berarti tidak samaJadi, bentuk panjang dari garis ini adalah
sumber
? :
bukankah ini operator ternary?var x= expression ? true:false
sumber
?: Apakah kondisi singkat untuk
else {}
danif(){}
masalah. Jadi kode Anda dapat dipertukarkan dengan ini:MDN - Operator Bersyarat (Ternary)
sumber
Hati-hati dengan ini. A -1 mengevaluasi true meskipun -1! = Benar dan -1! = Salah. Percayalah, saya sudah melihatnya terjadi.
begitu
-1? "true side": "false side"
mengevaluasi ke "sisi sebenarnya"
sumber