if
JavaScript'te bir satır içi ifadeyi nasıl kullanabilirim ? Satır içi bir else
ifade de var mı?
Bunun gibi bir şey:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
if
JavaScript'te bir satır içi ifadeyi nasıl kullanabilirim ? Satır içi bir else
ifade de var mı?
Bunun gibi bir şey:
var a = 2;
var b = 3;
if(a < b) {
// do something
}
Yanıtlar:
Mutlaka jQuery'ye ihtiyacınız yoktur. Sadece JavaScript bunu yapar.
var a = 2;
var b = 3;
var c = ((a < b) ? 'minor' : 'major');
c
Değişken olacaktır minor
değer ise true
ve major
değ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
if (a < b) c = 'major';
Üçlü bir operatör var, şöyle:
var c = (a < b) ? "a is less than b" : "a is not less than b";
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.
if
Bö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.
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 b
doğ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.a
b
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;
condition ? true
true
false
ve ""
diğer kısmı göz ardı etmek iyi olur.
2 == 2 ? doSomething()
aynı olurdu if (2 == 2) doSomething()
?
: false
veya : ""
JavaScript bu bekliyor kadar olmalıdır.
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.
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.)