Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Operator Logik JavaScript Kadang-kadang Mengembalikan Objek Daripada Boolean?

Mengapa Operator Logik JavaScript Kadang-kadang Mengembalikan Objek Daripada Boolean?

Linda Hamilton
Linda Hamiltonasal
2024-11-18 02:42:02976semak imbas

Why Do JavaScript Logical Operators Sometimes Return Objects Instead of Booleans?

Operator Logik dalam JavaScript: Memahami Keputusan Bukan Boolean

Tidak seperti pengendali matematik, yang sentiasa mengembalikan nilai berangka, pengendali logik (&& dan | |) dalam JavaScript kadangkala boleh mengembalikan objek dan bukannya boolean. Ini boleh menjadi berlawanan dengan intuisi, terutamanya apabila cuba menggunakannya untuk semakan bersyarat.

Mengapa Objek Dipulangkan

The || dan && operator ialah operator litar pintas logik, bermakna mereka menilai operan mereka dari kiri ke kanan dan mengembalikan nilai logik pertama yang ditentukan sepenuhnya. Dalam JavaScript, nilai ini boleh sama ada benar atau palsu, tetapi ia juga boleh menjadi objek.

Memahami Logik Bersyarat

Dalam ungkapan X || Y, X dinilai dahulu dan ditafsirkan sebagai nilai boolean. Jika X benar, ia dikembalikan serta-merta, dan Y tidak dinilai. Ini kerana ungkapan tersebut telah pun ditentukan sebagai benar.

Jika X adalah palsu, Y kemudiannya dinilai dan nilai booleannya dikembalikan.

Begitu juga, && berhenti menilai jika argumen pertama adalah palsu.

Tipu dengan "Salah"

Yang pertama titik kekeliruan timbul kerana apabila ungkapan dinilai sebagai "benar", ungkapan itu sendiri dikembalikan. Inilah sebabnya mengapa anda mungkin melihat nilai sebenar dikembalikan daripada ungkapan logik.

Helah dengan Null

Titik kekeliruan kedua berpunca daripada gelagat JavaScript dalam versi yang berbeza. Pada mulanya, ia akan mengembalikan palsu untuk ungkapan "palsu", tetapi dari versi 1.2 dan seterusnya, ia mengembalikan nilai sebenar ungkapan itu.

Contoh

Untuk menggambarkan:

var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {}); // Returns obj.fn() if defined, otherwise obj._
var _ = obj && obj._; // Returns obj._ if obj is true, otherwise obj

Atas ialah kandungan terperinci Mengapa Operator Logik JavaScript Kadang-kadang Mengembalikan Objek Daripada 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