Dalam operasi logis js, 0, "", null, false, undefinisi, dan NaN semuanya akan dinilai sebagai salah, dan yang lainnya akan dinilai sebagai benar.
||Hitung operan pertama terlebih dahulu. Jika dapat dikonversi ke true, kembalikan nilai ekspresi di sebelah kiri. Meskipun operan dari operator ||. bukan merupakan nilai Boolean, operan tersebut tetap dapat dianggap sebagai operasi Boolean OR, karena apa pun jenis nilai yang dikembalikannya, operan tersebut dapat dikonversi ke nilai Boolean.
Manfaatkan fiturnya untuk mengembalikan nilai non-Boolean: gunakan ||. untuk operan non-Boolean untuk memilih nilai yang ditentukan pertama dan bukan nol dalam kumpulan nilai alternatif (yang pertama adalah nilai bukan salah)
contoh:
var max = max_width ||.obj.max_width ||.
var attr = attr ||. ""; Operasi ini sering digunakan untuk menentukan apakah suatu variabel telah didefinisikan. Jika tidak ditentukan, berikan nilai awal. Ini lebih berguna saat menentukan nilai default untuk parameter fungsi.
&&, ini mengevaluasi ekspresi pertama terlebih dahulu, dan jika salah, ekspresi kedua tidak akan diproses; jika tidak, ekspresi berikutnya akan terus diproses; Memilih nilai ekspresi pertama yang tidak benar dari kiri ke kanan, dan mengembalikan nilai ekspresi terakhir jika tidak ditemukan.
Contoh : (rasanya perlu diperhatikan dengan matang)
2 && 's1' && '123' && 'sss' Nilai ekspresi sama dengan 'sss'
2 && 's1' && '' && 'sss' Nilai ekspresi sama dengan ''
2 && 's1' && NaN && 'sss' Nilai ekspresi sama dengan NaN
jika(sebuah >=5){
peringatan("Halo");
}
Dapat disederhanakan menjadi:
a >= 5 && peringatan("Halo");
Perbedaan antara typeof 5 dan typeof !!5 adalah cara penulisannya yang lebih teliti. Fungsi !! adalah untuk mengubah variabel bertipe lain menjadi tipe bool. Misalnya, jika(!!attr) => jika(attr)
Fitur ||.dan && di js tidak hanya membantu kami menyederhanakan kode, tetapi juga mengurangi keterbacaan kode. Hal ini mengharuskan kita untuk menimbangnya sendiri.
Implementasi fungsi startWith yang cerdas di JS, alert(!'asdf'.indexOf('s')) => !0 = true