Memahami Perbandingan Rentetan Leksikografi: Mengapa "11" Kurang Daripada "3"?
Dalam JavaScript, rentetan dibandingkan secara leksikografik, bermaksud aksara mengikut watak, sehingga ketidakpadanan ditemui atau satu rentetan tamat. Tingkah laku ini boleh membawa kepada hasil yang tidak dijangka apabila membandingkan rentetan yang mewakili nombor.
Perbandingan Leksikografi dalam Tindakan
Pertimbangkan kod berikut:
<code class="javascript">if ('11' < '3') alert('true');</code>
Kod ini dinilai benar kerana aksara pertama '11' ('1') secara leksikografi kurang daripada aksara pertama '3' ('3'). Dalam erti kata lain, JavaScript membandingkan rentetan sebagai jujukan aksara, bukan sebagai nombor.
Kesamaan Kod Aksara
Penyusunan leksikografi aksara adalah berdasarkan kod aksara Unikod mereka. Kod aksara Unikod untuk '1' ialah 49, manakala kod untuk '3' ialah 51. Memandangkan 49 adalah kurang daripada 51, '1' didahulukan sebelum '3' dalam urutan aksara.
Contoh Senario
Penukaran Numerik Eksplisit
Untuk membandingkan rentetan sebagai nombor, ia boleh ditukar secara eksplisit menggunakan operator:
<code class="javascript">+'11' < '3': False</code>
Atas ialah kandungan terperinci Mengapakah Perbandingan Rentetan Leksikografik JavaScript Menyebabkan \'11\' Kurang Daripada \'3\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!