Heim  >  Artikel  >  Web-Frontend  >  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
Barbara StreisandOriginal
2024-10-18 12:06:38988Durchsuche

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>

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>
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!

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