Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah Perbandingan Rentetan Leksikografik JavaScript Menyebabkan \"11\" Kurang Daripada \"3\"?

Mengapakah Perbandingan Rentetan Leksikografik JavaScript Menyebabkan \"11\" Kurang Daripada \"3\"?

Barbara Streisand
Barbara Streisandasal
2024-10-18 12:06:38990semak imbas

Why is JavaScript's Lexicographical String Comparison Causing

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

  • '31' < '3': Salah, kerana '3' lebih besar daripada '1' dari segi leksikografi.
  • '31' < '32': Benar, kerana '1' kurang daripada '2' dari segi leksikografi.
  • '31' < '30': Salah, kerana '0' lebih besar daripada '1' dari segi leksikografi.
  • 'abc' < 'aaa': Salah, kerana 'b' tidak kurang daripada 'a' dari segi leksikografi.
  • 'abc' < 'abd': Benar, kerana 'c' adalah kurang daripada 'd' dari segi leksikografi.

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!

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