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 .||
&&
true
false
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 NaN
falsidir, 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 null
ifadeyi yanlış yapan ilk yanlış değeri ( ) karşılayana kadar değerlendirilir , bu yüzden 2010
artık değerlendirilmez null
ve 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 b
yerine 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
; Ancakor
değerlendirilir sonra atama yaparken||
önce değerlendirilir. Bu aynı zamanda size Perish tarzı vermek$a=getSomething() or die('oops');