Mengapa Tatasusunan Kosong Dinilai kepada Benar dalam JavaScript tetapi Sama Palsu dalam Perbandingan Tegas?

Linda Hamilton
Lepaskan: 2024-11-07 20:52:03
asal
194 orang telah melayarinya

Why Does an Empty Array Evaluate to True in JavaScript but Equal False in Strict Comparison?

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!