Rumah >hujung hadapan web >tutorial js >Mengapa '2' > '10' Kembali Benar dalam JavaScript?
"10" Pulangan Benar dalam JavaScript? " /> "10" Kembalikan Benar dalam JavaScript? " />
Javascript: Unforeseen String-Integer Comparison Conundrum
Dalam bidang pembangunan web, selalunya perlu membandingkan parameter yang disimpan sebagai rentetan atau integer. Walau bagaimanapun , pepijat pelik telah muncul, menyebabkan pembangun menggaru kepala mereka kelihatan tidak menentu, seolah-olah parameter dianggap sebagai rentetan.
Pertimbangkan contoh yang membingungkan ini: apabila konsol kod.log(" 2" > "10") dilaksanakan, ia secara tidak dijangka mengembalikan 'benar'. Ini bertentangan dengan semua jangkaan logik, memandangkan 2 secara numerik lebih kecil daripada 10.
Jadi, apakah punca kelakuan aneh ini? Ia ternyata pengendali perbandingan Javascript melakukan perbandingan leksikal secara lalai Ini bermakna apabila membandingkan rentetan dan integer, rentetan dianggap sebagai titik kod Unicode dan membandingkan aksara mengikut aksara dalam rentetan "2". secara leksikal lebih besar daripada '1' terkemuka dalam "10", maka hasilnya.
Untuk menyelesaikan isu ini, adalah penting untuk menghuraikan parameter rentetan secara eksplisit kepada integer. Ini boleh dicapai menggunakan fungsi parseInt, seperti yang ditunjukkan dalam kod berikut:
console.log(parseInt("2", 10) > parseInt("10", 10));
Dengan menghuraikan rentetan kepada integer, kami memastikan bahawa perbandingan berangka dilakukan dengan betul tanpa menjadi mangsa perangkap leksikal.
Atas ialah kandungan terperinci Mengapa '2' > '10' Kembali Benar dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!