Warum der Vergleich von Zeichenfolgen mit Zahlen in Javascript funktioniert
Die Vergleichsoperatoren von Javascript wie >= und <= ermöglichen die Erzwingung von ihre Operanden in verschiedene Typen. Dazu gehört der Vergleich von Zeichenfolgen und Ganzzahlen, wie im angegebenen Codeausschnitt zu sehen ist.
Die Javascript-Spezifikation definiert das Verhalten von Vergleichsoperatoren in §11.8.5. Es besagt, dass ein String-Vergleich durchgeführt wird, wenn beide Operanden Strings sind. Wenn nur ein Operand ein String ist, wird er vor dem numerischen Vergleich in eine Zahl umgewandelt.
Der Unterschied zwischen String- und numerischem Vergleich kann zu unerwarteten Ergebnissen führen. Beispiel: „90“ > „100“ ist wahr, da Zeichenfolgen lexikografisch verglichen werden. Allerdings ist „90“ < 100 ist wahr, weil ein Operand in eine Zahl umgewandelt wird.
Während Javascript eine implizite Umwandlung zulässt, ziehen es einige vor, Zeichenfolgen vor dem Vergleich explizit in Zahlen umzuwandeln. Dies kann mit parseInt(), parseFloat(), dem unären Plusoperator ( ), Number() oder bitweisem ODER mit Null (str|0) erreicht werden.
Jede Konvertierungsmethode hat ihre eigenen Besonderheiten. parseInt() ignoriert Zeichen über dem ersten nicht numerischen Zeichen, parseFloat() ignoriert alle nicht dezimalen Zeichen, während unary plus die gesamte Zeichenfolge berücksichtigt. Bitweises ODER mit Null erzwingt eine 32-Bit-Ganzzahl und konvertiert NaN in 0.
Die Wahl der Konvertierungsmethode hängt von den spezifischen Anforderungen ab. Wenn das Ignorieren zusätzlicher Zeichen akzeptabel ist, kann parseInt() oder parseFloat() verwendet werden. Für Fälle, in denen die gesamte Zeichenfolge berücksichtigt werden soll, wird unäres Plus empfohlen.
Als allgemeine Richtlinie gilt es als gute Praxis, Zeichenfolgen aus Gründen der Klarheit und Konsistenz explizit in Zahlen umzuwandeln.
Das obige ist der detaillierte Inhalt vonWie geht JavaScript mit String-Zahl-Vergleichen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!