Anomali Operator "In": Mengapa Ujian Mengembalikan Benar untuk "0" jika Tatasusunan Tidak Mengandungi "0"
The "in " operator dalam JavaScript menyediakan cara untuk menyemak sama ada sifat wujud dalam objek atau unsur wujud dalam tatasusunan. Apabila menguji elemen dalam tatasusunan, seseorang mungkin menjangkakan pengendali "dalam" akan kembali benar hanya jika tatasusunan mengandungi elemen dengan nilai tepat itu. Walau bagaimanapun, dalam kes ujian untuk "0" dalam tatasusunan, pengendali "dalam" nampaknya berkelakuan di luar jangkaan.
Pertimbangkan contoh berikut:
<code class="javascript">var x = [1, 2]; 0 in x;</code>
Ini kembali benar, walaupun tatasusunan x tidak mengandungi nilai "0." Sebab bagi tingkah laku yang kelihatan paradoks ini terletak pada sifat pengendali "dalam".
Memahami Operator "dalam"
Pengendali "dalam" menguji jika sifat atau elemen wujud dalam objek atau tatasusunan. Walau bagaimanapun, adalah penting untuk menekankan bahawa pengendali menyemak kewujudan sifat atau elemen, tidak semestinya kehadiran nilai tertentu.
Dalam kes tatasusunan, pengendali "dalam" mengesahkan sama ada indeks tertentu wujud dalam tatasusunan, bukan jika elemen dengan nilai tertentu terdapat pada indeks tersebut. Ini bermakna ujian untuk "0" dalam tatasusunan menyemak sama ada unsur wujud pada indeks 0, tanpa mengira nilai elemen itu.
Aplikasi pada Contoh
Dalam tatasusunan contoh kami x, pengendali "0" menguji jika unsur wujud pada indeks 0. Memandangkan tatasusunan diindeks sifar dalam JavaScript, indeks 0 ialah indeks yang sah untuk tatasusunan dengan dua elemen. Oleh itu, pengendali "in" mengembalikan benar, walaupun tiada unsur dengan nilai "0" hadir dalam tatasusunan.
Key Takeaway
The "in " Tingkah laku pengendali boleh mengelirukan jika seseorang salah faham tujuannya. Ia tidak menguji kehadiran nilai tertentu tetapi lebih kepada kewujudan elemen atau sifat pada indeks atau kunci tertentu. Ini boleh membawa kepada hasil yang tidak dijangka apabila menyemak nilai seperti "0", yang selalunya mempunyai makna istimewa sebagai indeks atau kedudukan utama.
Atas ialah kandungan terperinci Mengapakah \'0 dalam [1, 2]\' Kembali Benar dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!