Tasusunan Kosong dan Paradoks Benar/Salah Sukar
Tatasusunan kosong nampaknya mempamerkan gelagat paradoks dalam JavaScript. Mereka menilai kepada benar apabila diuji secara tersirat, tetapi mereka juga menyamai palsu dalam perbandingan kesaksamaan yang jelas, menimbulkan persoalan tentang mekanisme asas yang sedang dimainkan.
Untuk memahami fenomena ini, adalah penting untuk menyelidiki bidang penukaran jenis tersirat, yang digunakan oleh JavaScript untuk menghantar nilai kepada pelbagai jenis untuk membolehkan perbandingan.
Apabila pengendali kesamaan (==) digunakan untuk membandingkan tatasusunan kepada benar, tatasusunan ditukar secara tersirat kepada nilai Boolean. Dalam JavaScript, tatasusunan kosong dipaksa kepada benar dalam konteks ini. Ini menerangkan sebab coretan kod memberikan output "Memang benar!" apabila menyemak sama ada arr tatasusunan kosong adalah benar.
Walau bagaimanapun, apabila pengendali kesamaan digunakan untuk membandingkan tatasusunan kepada palsu (cth., jika (arr == palsu)), senario berbeza berlaku. Dalam kes ini, JavaScript melakukan perbandingan kesamaan yang ketat antara nilai tatasusunan dan nilai palsu primitif.
Yang penting, JavaScript secara dalaman memanggil kaedah toString() tatasusunan sebelum menjalankan perbandingan. Penukaran ini mengembalikan rentetan kosong untuk tatasusunan kosong, yang kebetulan merupakan salah satu nilai palsu dalam JavaScript. Akibatnya, perbandingan kesaksamaan menghasilkan kebenaran, yang membawa kepada keputusan yang kelihatan bercanggah: "Ia palsu!" dilog.
Untuk menggambarkan lebih lanjut kerumitan, pernyataan bersyarat if (arr && arr == false) secara serentak menyemak kebenaran arr dan kesamaannya dengan palsu. Memandangkan arr adalah benar, syarat kedua dinilai, menghasilkan " ...apa??" sedang dicetak.
Tingkah laku pelik ini menyerlahkan kepentingan memahami penukaran jenis apabila membandingkan nilai yang berbeza dalam JavaScript dan mempamerkan nuansa halus yang boleh timbul apabila bekerja dengan tatasusunan dan nilai palsu.
Atas ialah kandungan terperinci Mengapa Tatasusunan Kosong Dinilai kepada Benar dalam JavaScript tetapi Sama Palsu dalam Perbandingan Tegas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!