Mantıksal operatörler && ve || tuhaf bir şekilde farklı türlerin ele. Ne yapmaları gerektiğine karar vermek için sol taraftaki değerleri Boolean türüne dönüştüreceklerdir, ancak operatöre ve bu dönüşümün sonucuna bağlı olarak, orijinal soldaki değeri veya sağa dönüş değerini döndüreceklerdir.
|| Örneğin operatör, değeri true değerine dönüştürüldüğünde sola döndürür ve aksi takdirde değeri tersine döndürür. Bu, değerler Boolean olduğunda ve diğer türlerin değerleri için benzer bir şey yaptığında beklenen etkiye sahiptir.
console.log(null || “user”)
// → user
console.log(“Agnes” || “user”)
// → Agnes
Bu işlevselliği, varsayılan bir değere geri düşme yolu olarak kullanabiliriz. Boş olabilecek bir değeriniz varsa, || bir yedek değer ile sonra. Başlangıç değeri false değerine dönüştürülebilirse, bunun yerine yedeği alırsınız. Dizeleri ve sayıları Boolean değerlerine dönüştürme kuralları 0, NaN ve boş dizenin (“”) false olarak sayılırken, tüm diğer değerler true olarak sayılır.
0 || -1 produces -1, and “” || “!?” yields “!?”.
&& operatörü benzer şekilde çalışır, ancak diğer şekilde çalışır. Soldaki değer false dönüşen bir şey olduğunda, o değeri döndürür ve aksi takdirde sağdaki değeri döndürür.
Bu iki operatörün bir diğer önemli özelliği, haklarına düşen kısmın sadece gerektiğinde değerlendirilmesidir. Doğru durumda || X, X ne olursa olsun – korkunç bir şey yapan bir eticaret sistemleri program parçası olsa bile – sonuç doğru ve X asla değerlendirilmez. Aynı yanlış ve X için de geçerlidir, bu yanlıştır ve X’i görmezden gelir. Buna kısa devre değerlendirmesi denir.
Koşullu operatör benzer şekilde çalışır. İkinci ve üçüncü değerlerden sadece seçilmiş olanı değerlendirilir.