Rumah > Artikel > hujung hadapan web > Mengapa Operator Logik JavaScript Kadang-kadang Mengembalikan Objek Daripada Boolean?
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!