JavaScript'te soru işareti ve iki nokta üst üste


Yanıtlar:


363

Buna, üçlü bir operatör olan Koşullu Operatör denir .

Bu formu içinde bulunmaktadır: condition? value-if-true: "O zaman" ve "başka" olarak value-if-false
düşünün .?:

Kodunuz şuna eşdeğerdir:

if (max != 0)
  hsb.s = 255 * delta / max;
else
  hsb.s = 0;

27
"?" üçlü operatör değil; "?:" üçlü operatördür. Hakkında konuşmak "?" üçlü operatör Costello olmadan Abbott, Hardy olmadan Laurel, Chong olmadan Cheech hakkında konuşmak gibi ....
Jason S

11
Tamam, tamam ... şimdi belirsiz bir zamir kullanıyorum, mutlu mu? :)
Greg

14
Bilgiçlik olmak gerekirse, bu kadar bir çoğu programlama dillerinde tek olur üçlü operatördür,. 3 parça üzerinde çalışan herhangi bir operatör üçlü bir operatördür, tıpkı additionönceki ve sonraki ifadelerde çalışan bir ikili operatördür (örn. 1 + 2 artı 1 ve 2'de çalışır) veya olumsuzlama tek bir operatördür (örn. -X burada x değeri reddedilir).
Davy8

6
@ Davy8: Ve buna şartlı operatör denilebilir .
Mekanik salyangoz

İki koşulu kontrol etmek isterseniz ne olur?
Thanos Dodd

38

Netlik için uygun şekilde parantez içine alınmıştır.

hsb.s = (max != 0) ? (255 * delta / max) : 0;

anlamı geri dönüş

  • 255*delta/max maks ise = 0
  • 0 maks == 0 ise

7

Parantezle şu şekilde yazıldığında bu muhtemelen biraz daha açıktır:

hsb.s = (max != 0) ? (255 * delta / max) : 0;

Yaptığı şey, ilk parantez içindeki parçayı değerlendirmektir. Sonuç doğruysa? ve önce: döndürülür. Yanlışsa, aşağıdakileri izleyen: döndürülür.


7
hsb.s = max != 0 ? 255 * delta / max : 0;

?üçlü bir operatördür. ifİle birlikte çalışır gibi:

!= eşit değil demektir

Yani, bu çizginin uzun biçimi

if (max != 0) { //if max is not zero
  hsb.s = 255 * delta / max;
} else {
  hsb.s = 0;
}

1

? : bu üçlü operatör değil mi?

var x= expression ? true:false


3
Bu kullanımının bir örneğidir, ancak aslında ifadenizin daha kısa bir sürümü vardır, sadece DOĞRU / YANLIŞ istediğiniz durumlar için: Eğer 'ifade' sadece bir sayı veya dize içeren bir değişkense, "var x = !! ifadesi "bunu boole sonucuna dönüştürür.
Scott Lahteine


-3

Buna dikkat et. -1! = True ve -1! = False olmasına rağmen A -1 doğru olarak değerlendirilir. Güven bana, bunun olduğunu gördüm.

yani

-1? "true side": "yanlış taraf"

"gerçek taraf" olarak değerlendirir


3
"JavaScript'te bir doğruluk değeri, Boole bağlamında değerlendirildiğinde doğru olarak kabul edilen bir değerdir. Tüm değerler, falsy olarak tanımlanmadığı sürece doğrudur (yani, false, 0," ", null, undefined ve NaN hariç) ." Bu nedenle -1 doğru olarak değerlendirilir. ( developer.mozilla.org/tr-TR/docs/Glossary/Truthy )
jobmo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.