Rumah >hujung hadapan web >tutorial js >Mengapakah Operator Logik dalam JavaScript Kadangkala Mengembalikan Nilai Bukan Boolean?

Mengapakah Operator Logik dalam JavaScript Kadangkala Mengembalikan Nilai Bukan Boolean?

Susan Sarandon
Susan Sarandonasal
2024-11-18 03:01:02282semak imbas

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._ = {});

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!

Kenyataan:
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