JavaScript'te satır içi IF deyimi nasıl yazılır?


287

ifJavaScript'te bir satır içi ifadeyi nasıl kullanabilirim ? Satır içi bir elseifade de var mı?

Bunun gibi bir şey:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}

12
Burada jQuery nerede? Ve soruyu gerçekten anlamıyorum.
Marc

jquery kısmı şu $ (belge) gibi olabilir .ready (function () {var a = 2; var b = 3; if (a <b) {// bir şey yap}});
TakeItEasy

Bu bir nakavt soru da
Martin Capodici

1
Ayrıca açısal 1 ve 2 ve diğer her js çerçevesi (
vanilla.js

Yanıtlar:


643

Mutlaka jQuery'ye ihtiyacınız yoktur. Sadece JavaScript bunu yapar.

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

cDeğişken olacaktır minordeğer ise trueve majordeğer olup olmadığını false.


Bu, Koşullu (üçlü) Operatör olarak bilinir.

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator


59
Tam olarak soruyu cevaplayan bir Satır İçi IF'in nasıl kullanılacağını gösterir.
MattW

26
Sadece not etmek gerekirse, bu durumda tüm ebeveynler isteğe bağlıdır. Genellikle kullanıldıklarında dikte eden kişisel tercih / kodlama stilidir.
Klein

3
@khany, bu bir JavaScript sorusu. İfadeler diğer dillerde farklı değerlendirilebilir.
Klein

1
@MattW Bu, bir Satır İçi IF'in nasıl kullanılacağını göstermez, bir IF ELSE'in nasıl kullanılacağını gösterir
Finlay Percy

1
@getName gerçekten değil, ancak isterseniz tek satırlık bir ifade kullanabilirsinizif (a < b) c = 'major';
MattW

44

ifSatır içi ifadeyi satır içi yazmak için içindeki kodun yalnızca bir ifade olması gerekir:

if ( a < b ) // code to be executed without curly braces;

43

Üçlü bir operatör var, şöyle:

var c = (a < b) ? "a is less than b"  : "a is not less than b";

4
Aslında hiçbir şeye atanması gerekmez. Sağ taraftaki elemanlar basitçe fonksiyon çağrıları olabilir.
jfriend00

7
Fonksiyon çağrıları olmak zorunda bile değiller ... 0 < 1 : 5 : 120;mükemmel bir şekilde geçerli bir ifadedir. Yine de, hat başına ödeme yapılmadıkça biraz işe yaramaz.
Ry-

Tamam, @ jfriend00, minitech, ipuçları için teşekkürler.
Mahmoud Gamal

@ jfriend00 Yine de neredeyse tüm durumlarda buna karşı tavsiye ediyorum. İfadenin değerini kullanmıyorsanız, gerçekten istediğiniz şey yan etkilerdir; ve yan etkiler ifadeler için mükemmeldir. ifBöyle bir durumda sade eski sıkıcı ifadeyi kullanmak, kodunuzu okumayı ve anlamayı çok daha kolay hale getirecek ve daha sonraki değişikliklerle kırılma olasılığını azaltacaktır.
Emil Lundberg

35

Ayrıca, yalnızca Mantıksal İşleçleri kullanarak bir if / else değerini yaklaşık olarak belirleyebilirsiniz.

(a && b) || c

Yukarıdakiler kabaca aşağıdakilerle aynıdır:

a ? b : c

Ve elbette, kabaca aynı:

if ( a ) { b } else { c }

Kabaca söylüyorum, çünkü bu yaklaşımda bir fark var, çünkü değerinin bdoğru olarak değerlendirileceğini bilmelisiniz , aksi takdirde her zaman elde edersiniz c. Temel olarak, ortaya çıkacak if () { here }kısmın şimdi yerleştirdiğiniz durumun bir parçası olduğunu anlamalısınız if ( here ) { }.

Yukarıdaki, operatörün türüne bağlı olan mantıksal ifadeyi oluşturan orijinal değerlerden birini geçirme / döndürme JavaScripts davranışı nedeniyle mümkündür. PHP gibi bazı diğer diller, işlemin gerçek sonucunu, yani doğru ya da yanlış, yani sonuç her zaman doğru ya da yanlıştır; Örneğin:

14 && 0          /// results as 0,  not false
14 || 0          /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4,  not true
true && ''       /// results as ''
{} || '0'        /// results as {}

Temel if avantajı, normal bir if ifadesiyle karşılaştırıldığında, ilk iki yöntemin bir argümanın sağ tarafında, yani bir görevin parçası olarak çalışabilmesidir.

d = (a && b) || c;
d = a ? b : c;

if `a == true` then `d = b` else `d = c`

Bunu standart bir if ifadesiyle elde etmenin tek yolu, değerlendirmeyi çoğaltmak olacaktır:

if ( a ) { d = b } else { d = c }

Üçlü Operatör yerine neden yalnızca Mantıksal Operatörleri kullandığınızı sorabilirsiniz , emin olmak istemediğiniz ve her ikisinin de doğru olmasını istemediğiniz sürece muhtemelen yapamayacağınız basit durumlar için . Ayrıca, iç içe üçlü işlemleri kullanarak oldukça dağınık olabilen Mantıksal işleçlerle daha akıcı karmaşık koşullar elde edebilirsiniz ... sonra yine kodunuzun kolayca okunmasını istiyorsanız, ikisi de gerçekten sezgisel değildir.ab


32

Açık İngilizce'de sözdizimi şunları açıkladı:

if(condition){
    do_something_if_condition_is_met;
}
else{
    do_something_else_if_condition_is_not_met;
}

Şu şekilde yazılabilir:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;

5
Bunu "else" ifadesi olmadan yapmak mümkün müdür? iecondition ? true
Şeytan'ın Avukatı

@ScottBeeson Tabii. Aynı zamanda durumu kullanımınıza da bağlıdır. true falseve ""diğer kısmı göz ardı etmek iyi olur.
Onimusha

Yani 2 == 2 ? doSomething()aynı olurdu if (2 == 2) doSomething()?
Şeytan'ın Avukatı

1
Evet, ancak diğer kısım tamamen atlanamaz. Kira At : falseveya : ""JavaScript bu bekliyor kadar olmalıdır.
Onimusha

5
Ah. Yani bunu else ifadesi olmadan yapmak mümkün değil .
Şeytan'ın Avukatı

21
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );

48
Ne okuduğumu bile bilmiyorum, ama çok gülüyorum.
Jazz

20

Yalnızca satır içi bir IF (ELSE olmadan) istiyorsanız, mantıksal AND operatörünü kullanabilirsiniz:

(a < b) && /*your code*/;

Bir ELSE'ye de ihtiyacınız varsa, diğer insanların önerdiği üçlü işlemi kullanın.


17

JavaScript ile bunu yapabilirsiniz:

a < b ? passed() : failed();

8

Bilginize, koşullu operatörler oluşturabilirsiniz

var a = (truthy) ? 1 : (falsy) ? 2 : 3;

Mantık yeterince karmaşıksa, bir IIFE kullanmayı düşünebilirsiniz.

var a = (function () {
  if (truthy) return 1;
  else if (falsy) return 2;
  return 3;
})();

Tabii ki, bu mantığı bir kereden fazla kullanmayı planlıyorsanız, şeyleri güzel ve NEM ALMA fonksiyonunu kapsüllemeye çalıştınız.


6

Sık sık kullanarak koşul başına daha fazla kod çalıştırmak gerekir: ( , , )birden çok kod öğeleri yürütmek:

var a = 2;
var b = 3;
var c = 0;

( a < b ?  ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );

4

Buna eklemek için && ve || operatörler. Bunun gibi

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";

0

Soru esas olarak değil: aşağıdakileri yazabilir miyim?

if (foo)
  console.log(bar)
else
  console.log(foo + bar)

cevap, evet, yukarıdaki tercüme olacaktır.

ancak aşağıdakileri yapmaya dikkat edin

if (foo)
  if (bar)
    console.log(foo)
  else 
    console.log(bar)
else 
  console.log(foobar)

Yukarıdaki durum bir istisna oluşturacağından ve benzer permütasyonlar istenmeyen davranışlar üreteceğinden belirsiz kodu parantez içine aldığınızdan emin olun.)


0

inline:

(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')

doğru sonuç: hipotez doğru olduğunda yapılan ifadeler

falsey sonuç: hipotez yanlış olduğunda yürütülen ifadeler

örneğin:

var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');
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.