Javacript, mantıksal operatörler ve için kısa devre değerlendirmesini kullanır . Ancak, a veya değer yerine yürütmeyi durduran son değerin sonucunu döndürmesi diğer dillerden farklıdır .||&&truefalse
Aşağıdaki değerler JavaScript'te yanlış olarak kabul edilir.
- yanlış
- boş
"" (boş dize)
- 0
- Nan
- Tanımsız
Operatör öncelik kurallarını göz ardı ederek ve işleri basit tutarak, aşağıdaki örnekler değerlendirmeyi hangi değerin durdurduğunu ve sonuç olarak geri döndüğünü gösterir.
false || null || "" || 0 || NaN || "Hello" || undefined // "Hello"
İlk 5 değer NaNfalsidir, bu nedenle ilk doğruluk değerini karşılayana kadar hepsi soldan sağa değerlendirilir - "Hello"bu da tüm ifadeyi doğru yapar, böylece daha sonraki her şey değerlendirilmez ve "Hello"ifadenin sonucu olarak geri döner . Benzer şekilde, bu durumda:
1 && [] && {} && true && "World" && null && 2010 // null
İlk 5 değerin tümü doğrudur ve nullifadeyi yanlış yapan ilk yanlış değeri ( ) karşılayana kadar değerlendirilir , bu yüzden 2010artık değerlendirilmez nullve ifadenin sonucu olarak döndürülür.
Verdiğiniz örnek, bir ödev gerçekleştirmek için bu JavaScript özelliğinden faydalanmaktır. Bir değer kümesi arasında ilk doğruluk veya falsi değerini elde etmeniz gereken her yerde kullanılabilir. Bu kod aşağıda değer atar "Hello"etmek byerine if-else kontrolleri yapmanın, daha kolay bir varsayılan değer atamak için yapar gibi.
var a = false;
var b = a || "Hello";
Aşağıdaki örnek bu özellik sömürü diyebiliriz ve ben inanıyorum kod okumayı zorlaştırır.
var messages = 0;
var newMessagesText = "You have " + messages + " messages.";
var noNewMessagesText = "Sorry, you have no new messages.";
alert((messages && newMessagesText) || noNewMessagesText);
Uyarının içinde messages, sahte olup olmadığını kontrol ederiz ve eğer evetse, değerlendirin ve geri gönderin noNewMessagesText, aksi takdirde değerlendirin ve geri dönün newMessagesText. Bu örnekte sahte olduğu için noNewMessagesText ve alert'te durduk "Sorry, you have no new messages.".
$f=$a or $f=$b or $f=$c; // etc. PHP aynı işi yapan hem||operatöre hem de operatöre sahiptiror; Ancakordeğerlendirilir sonra atama yaparken||önce değerlendirilir. Bu aynı zamanda size Perish tarzı vermek$a=getSomething() or die('oops');