Her şeyden önce, üçlü bir ifade if / else yapısının yerini tutmaz - bir değer döndüren if / else yapısına eşdeğerdir . Yani, bir if / else deyimi kod, üçlü bir ifade bir ifadedir , yani bir değer döndürür.
Bu birkaç anlama geliyor:
- üçlü ifadeleri yalnızca
=
dönüş değerinin atanacağı değişkenin sol tarafında bir değişkeniniz olduğunda kullanın
- üçlü ifadeleri yalnızca döndürülen değer iki değerden biri olduğunda kullanın (veya uygunsa iç içe ifadeleri kullanın)
- ifadenin her bölümü (? ve sonrası:) yan etkileri olmayan bir değer döndürmelidir (
x = true
tüm ifadeler son değeri döndürdüğü için ifade true değerini döndürür, ancak x döndürülen değer üzerinde herhangi bir etkiye sahip olmadan x değerini değiştirir)
Kısacası - üçlü ifadenin 'doğru' kullanımı
var resultofexpression = conditionasboolean ? truepart: falsepart;
condition ? x=true : null ;
Değerini ayarlamak için üçlü bir ifade kullandığınız örnek yerine, şunu x
kullanabilirsiniz:
condition && (x = true);
Bu hala bir ifadedir ve bu nedenle doğrulamayı geçmeyebilir, bu nedenle daha iyi bir yaklaşım
void(condition && x = true);
Sonuncusu doğrulama işlemini geçecek.
Ama sonra tekrar, eğer beklenen değer bir boole ise, sadece koşul ifadesinin sonucunu kullanın
var x = (condition); // var x = (foo == "bar");
GÜNCELLEME
Numunenizle ilgili olarak bu muhtemelen daha uygundur:
defaults.slideshowWidth = defaults.slideshowWidth || obj.find('img').width()+'px';
condition ? x = true : null;
muhtemelen yazılmalıdırx = (condition ? true : null);
. Bir yana, javascriptnull
yanlış olarak değerlendirir, böylece bu durumdax = (condition);
ve aynı sonucu elde edebilirsiniz .