Rumah > hujung hadapan web > tutorial js > Mengapakah Perbandingan Rentetan Leksikografik JavaScript Menyebabkan \'11\' Kurang Daripada \'3\'?

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

Barbara Streisand
Lepaskan: 2024-10-18 12:06:38
asal
1088 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan