Rumah > Artikel > hujung hadapan web > Mengapa Tatasusunan Kosong Menilai kepada Kedua-dua Betul dan Salah dalam JavaScript?
Menyingkap Paradoks: Tatasusunan Kosong di Zon Senja Boolean
Tatasusunan kosong, nampaknya misteri, mempamerkan dualiti yang pelik, menilai secara serentak kepada benar dan salah. Tingkah laku yang menarik ini berpunca daripada penukaran tersirat yang berlaku dalam pengendali kesaksamaan.
Dalam coretan kod yang disediakan, kami menyaksikan dualiti ini secara langsung:
var arr = []; console.log('Array:', arr); if (arr) console.log("It's true!"); if (arr == false) console.log("It's false!"); if (arr && arr == false) console.log("...what??");
Untuk menguraikan teka-teki ini, kami menyelidiki mekanik pengendali kesaksamaan. Apabila digunakan dengan objek (dalam kes ini, tatasusunan ialah objek), ia menyemak kehadirannya. Oleh itu, jika (arr) mengembalikan benar kerana tatasusunan kosong ialah objek yang sah.
Walau bagaimanapun, keadaan menjadi lebih keruh apabila membandingkan tatasusunan kepada primitif palsu menggunakan operator ==. Perbandingan ini melibatkan penukaran tatasusunan kepada rentetan melalui arr.toString(). Rentetan kosong yang terhasil, dilambangkan sebagai "", dianggap sebagai nilai palsu dalam JavaScript.
Oleh itu, jika (arr == false) menilai kepada benar kerana rentetan kosong adalah sama dengan primitif palsu dalam konteks ini. Percanggahan yang jelas ini timbul daripada penukaran jenis tersirat yang JavaScript lakukan.
Untuk menyelesaikan kekeliruan, seseorang harus memilih pengendali kesamaan tiga kali ganda (===), yang mempertimbangkan kedua-dua nilai dan kesamaan jenis. Ini memastikan tatasusunan kosong tidak pernah dianggap sama dengan palsu.
Ringkasnya, dikotomi tatasusunan kosong yang kelihatan benar dan palsu berpunca daripada penilaian berbeza yang dilakukan oleh pengendali kesaksamaan dan kesaksamaan yang ketat, yang menonjolkan perkara yang halus. kerumitan pengendalian jenis JavaScript.
Atas ialah kandungan terperinci Mengapa Tatasusunan Kosong Menilai kepada Kedua-dua Betul dan Salah dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!