Memahami Nilai Pulangan Operator Logik
Dalam JavaScript, operator logik && (logik DAN) dan || (logik ATAU) dikenali kerana mengembalikan hasil boolean. Walau bagaimanapun, dalam keadaan tertentu, mereka mungkin mengembalikan nilai bukan boolean secara mengejutkan. Anomali ini timbul disebabkan oleh proses penilaian yang mendasari pengendali ini.
Operator Litar Pintas Logik
Ciri utama && dan || terletak pada tingkah laku mereka sebagai pengendali litar pintas yang logik. Apabila menilai ungkapan menggunakan operator ini, mereka menilai hujah kiri mereka terlebih dahulu.
Menilai || (Logik ATAU)
Dalam kes ||, jika argumen sebelah kiri menilai kepada nilai logik yang ditentukan sepenuhnya (benar atau salah), hasilnya dikembalikan tanpa menilai sebelah kanan hujah. Ini berlaku kerana hasil logik telah ditentukan.
Menilai && (Logik DAN)
Serupa dengan ||, && menilai hujah sebelah kiri terlebih dahulu. Walau bagaimanapun, jika hujah sebelah kiri dinilai kepada palsu, ungkapan itu kembali palsu tanpa menilai hujah sebelah kanan. Ini kerana && memerlukan kedua-dua hujah adalah benar agar ungkapan itu benar.
Memahami Nilai Pulangan
Apabila ungkapan logik dinilai sebagai benar, kedua-dua && dan || kembalikan hujah sebelah kiri itu sendiri. Ini kerana dalam JavaScript, sebarang ungkapan yang menilai kepada nilai bukan boolean dianggap sebagai benar.
Walau bagaimanapun, jika hujah sebelah kiri menilai kepada palsu, ungkapan asal akan menilai kepada palsu. Dalam JavaScript versi 1.2 dan lebih baru, ungkapan itu sendiri dikembalikan sebagai hasilnya. Tingkah laku ini membenarkan rantaian operasi logik tanpa memerlukan operator ternary yang jelas.
Contoh:
Pertimbangkan kod berikut:
var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {});
Dalam contoh ini, jika obj.fn ditakrifkan dan mengembalikan nilai kebenaran, ungkapan obj.fn akan dikembalikan. Jika obj.fn tidak ditakrifkan, ungkapan akan dinilai kepada palsu, yang akan menyebabkan hujah sebelah kanan, obj._ || (obj._ = {}), untuk dinilai dan dikembalikan.
Atas ialah kandungan terperinci Mengapakah Operator Logik dalam JavaScript Kadangkala Mengembalikan Nilai Bukan Boolean?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!