Heim > Web-Frontend > js-Tutorial > Warum führt der lexikografische Zeichenfolgenvergleich von JavaScript dazu, dass „11' kleiner als „3' ist?

Warum führt der lexikografische Zeichenfolgenvergleich von JavaScript dazu, dass „11' kleiner als „3' ist?

Barbara Streisand
Freigeben: 2024-10-18 12:06:38
Original
1088 Leute haben es durchsucht

Why is JavaScript's Lexicographical String Comparison Causing

Verstehen des lexikografischen Zeichenfolgenvergleichs: Warum ist „11“ kleiner als „3“?

In JavaScript werden Zeichenfolgen lexikographisch verglichen, d. h. Zeichen nach Zeichen, bis eine Nichtübereinstimmung festgestellt wird oder eine Zeichenfolge endet. Dieses Verhalten kann beim Vergleich von Zeichenfolgen, die Zahlen darstellen, zu unerwarteten Ergebnissen führen.

Lexikografischer Vergleich in Aktion

Beachten Sie den folgenden Code:

<code class="javascript">if ('11' < '3') alert('true');</code>
Nach dem Login kopieren

Dieser Code ergibt „true“, da das erste Zeichen von „11“ („1“) lexikographisch kleiner ist als das erste Zeichen von „3“ („3“). Mit anderen Worten: JavaScript vergleicht Zeichenfolgen als Zeichenfolgen und nicht als Zahlen.

Zeichencode-Äquivalenz

Die lexikografische Reihenfolge der Zeichen basiert auf ihren Unicode-Zeichencodes. Der Unicode-Zeichencode für „1“ ist 49, während der Code für „3“ 51 ist. Da 49 kleiner als 51 ist, steht „1“ in der Zeichenfolge vor „3“.

Beispielszenarien

  • '31' < '3': Falsch, da '3' lexikographisch größer als '1' ist.
  • '31' < '32': Stimmt, weil '1' lexikografisch gesehen kleiner als '2' ist.
  • '31' < '30': Falsch, da '0' lexikographisch größer als '1' ist.
  • 'abc' < 'aaa': Falsch, da 'b' lexikographisch nicht kleiner als 'a' ist.
  • 'abc' < 'abd': Stimmt, weil 'c' lexikografisch gesehen kleiner als 'd' ist.

Explizite numerische Konvertierung

Um Zeichenfolgen als Zahlen zu vergleichen, können sie explizit mit dem Operator:

<code class="javascript">+'11' < '3': False</code>
Nach dem Login kopieren
konvertiert werden

Das obige ist der detaillierte Inhalt vonWarum führt der lexikografische Zeichenfolgenvergleich von JavaScript dazu, dass „11' kleiner als „3' ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage