Anomalien beim String-Vergleich: Warum „11“ in JavaScript kleiner als „3“ ist
Das Verhalten beim String-Vergleich von JavaScript kann manchmal kontraintuitiv sein. Ein solches Beispiel ist die Ungleichung „11“ < '3', was überraschenderweise true zurückgibt.
In JavaScript werden Zeichenfolgen lexikographisch Zeichen für Zeichen von links nach rechts verglichen. Wenn die Zeichen unterschiedlich sind, basiert der Vergleich auf ihren Unicode-Codepunkten. Der ASCII-Code für „1“ ist 49, während der für „3“ 51 ist. Daher ist das erste Zeichen von „11“ (mit einem Codepunkt von 49) kleiner als das erste Zeichen von „3“ (mit einem Code). Punkt von 51), was zu der Ungleichung '11' < '3'.
Hier sind einige zusätzliche Beispiele, um dieses Verhalten zu veranschaulichen:
Es ist wichtig zu beachten, dass für Buchstaben dieselben Vergleichsregeln gelten. Wenn „b“ nicht kleiner als „a“ ist, kann „abc“ nicht kleiner als „aaa“ sein. Allerdings ist „c“ kleiner als „d“, also ist „abc“ kleiner als „abd“.
Um solche Anomalien beim Vergleich von Zeichenfolgen als Zahlen zu vermeiden, wird empfohlen, sie explizit mit dem Operator „ “ zu konvertieren :
<code class="js">+'11' < '3' // false</code>
Das obige ist der detaillierte Inhalt vonWarum wird „11' in JavaScript mit weniger als „3' verglichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!