Empfohlenes Tutorial: JS-Tutorial
JavaScript ist eine magische Sprache, Zeichenfolge Es gibt 5 Möglichkeiten, Zahlen umzuwandeln, und jede hat ihre eigenen Fallstricke! Als Nächstes stelle ich Ihnen in diesem Artikel die 5 Methoden zur Konvertierung von JavaScript-Zeichenfolgen in Zahlen und ihre Fallstricke vor. Interessierte Freunde sollten einen Blick darauf werfen
Welche soll ich wählen? Wann sollte man es wählen? Warum so etwas wählen? Wir gehen sie einzeln durch und schlüsseln die gemeinsamen Fallstricke jedes Ansatzes auf.
parseInt
Basierend auf den Benchmarks von JsPerf.com reagieren die meisten Browser am besten auf parseInt. Obwohl dies der schnellste Weg ist, stößt die Verwendung von preseInt auf einige häufige Fallstricke:
parseInt('08') // returns 0 部分老浏览器. parseInt('44.jpg') // returns 44
ParseInt: Wenn keine Basis übergeben wird, ist die Standardbasis 10 parseInt(num, 10), wenn Sie dies nicht tun Kennen Sie den Typ des Num-Attributs und verwenden Sie parseInt nicht, um einen String in eine Zahl umzuwandeln.
parseFloat
Dies ist eine sehr gute Wahl, wenn Sie keine Hexadezimalzahlen analysieren. Zum Beispiel:
parseInt(-0xFF) // returns -255 parseInt("-0xFF") // returns -255 parseFloat(-0xFF) // returns -255 parseFloat("-0xFF") // returns 0
HINWEIS: Negative Hexadezimalzahlen in -Strings sind ein Sonderfall, und wenn Sie sie mit parseFloat analysieren, ist das Ergebnis falsch. Um NaN-Situationen in Ihrem Programm zu vermeiden, sollten Sie den konvertierten Wert überprüfen.
parseFloat('44.jpg') // return 44
parseFloat: Seien Sie vorsichtig beim Konvertieren von Hexadezimalzahlen. Wenn Sie den Typ des Objekts, das Sie konvertieren möchten, nicht kennen, verwenden Sie parseFloat nicht.
Bitweise nicht
Sie können einen String in eine Ganzzahl umwandeln, aber es ist keine Gleitkommazahl. Wenn es sich um eine String-Konvertierung handelt, wird 0 zurückgegeben.
~~1.23 // returns 1 ~~"1.23" // returns 1 ~~"23" // returns 23 ~~"Hello world" // returns 0
Was ist das Prinzip dahinter? Durch Umdrehen jedes Bits, auch A1-Komplement der Zahl genannt. Sie können es verwenden, beachten Sie jedoch, dass es nur zum Speichern von Ganzzahlen verwendet werden kann. Verwenden Sie es daher im Allgemeinen nicht, es sei denn, Sie sind sicher, dass die Zahl zwischen 32-Bit-Ganzzahlen liegt (aufgrund der Spezifikation des Aufrufs von ToInt32).
Bitweise NICHT: Verwenden Sie dies, um sicherzustellen, dass die Eingabe keine Zeichen enthält, nur für Ganzzahlen.
Nummer
Nummer hat das gleiche Problem wie die oben erwähnte Konvertierungsmethode. Beim Parsen wird versucht, die Nummer herauszufinden, die Sie ihr gegeben haben :
Number("023") // returns 23 Number(023) // returns 19
Hinweis: 023 ist eigentlich eine Oktalzahl, die 19 zurückgibt, egal wie Sie es machen; das Gleiche gilt für Hexadezimalzahlen ohne einfache oder doppelte Anführungszeichen.
Number ist auch einer der langsamsten in JsPerf.
Anzahl: Kaum genutzt.
Unärer Cloud-Operator
"1.23" * 1 // returns 1.23 "0xFF" - 0 // returns 255 "0xFF.jpg" / 1 // returns NaN +"023" // returns 23
Der unäre Operator unterscheidet sich von anderen Parsing-Methoden. Wenn es sich um einen NaN-Wert handelt, ist der zurückgegebene Wert NaN . Dies ist meine Lieblingsmethode zum Konvertieren numerischer Werte, da ich nicht der Meinung bin, dass ein Objekt mit Zeichen als 0 behandelt oder anhand der Anzahl seiner Bits „erraten“ werden sollte. Ich verwende grundsätzlich den +-Operator, weil er weniger verwirrend ist. Die Verwendung von -0 ist zwar in Ordnung, vermittelt jedoch nicht ganz die Absicht der Konvertierung in eine Zahl.
Zusammenfassung, wie Zeichenfolgen in Zahlen umgewandelt werden
Wenn negative hexadezimale Zahlenzeichenfolgen in Zahlen umgewandelt werden. Alles, was zuerst in einen String konvertiert werden sollte (z. B. über + "" ) und dann mit unären Operatoren oder parseInt mit Radix in eine Zahl geparst wird. Wenn das Ergebnis jedoch kein NaN-Wert ist, ist es sinnvoller, parseFloat zu verwenden.
Das obige ist der detaillierte Inhalt vonWas ist die Methode, um eine Zeichenfolge in eine Zahl umzuwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!