Rumah >hujung hadapan web >tutorial js >Mengapa '2' > '10' Kembali Benar dalam JavaScript?

Mengapa '2' > '10' Kembali Benar dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-11-13 10:24:02188semak imbas

Why Does "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!

Kenyataan:
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