Mengapakah Operator Logik dalam JavaScript Kadangkala Mengembalikan Nilai Bukan Boolean?

Susan Sarandon
Lepaskan: 2024-11-18 03:01:02
asal
203 orang telah melayarinya

Why Do Logical Operators in JavaScript Sometimes Return Non-Boolean Values?

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._ = {});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan