Es gibt drei Arten von fünf Methoden zum Konvertieren von Daten in Zahlen in JS, darunter:
•Zwang, die grundlegenden Datentypen von JS werden auf diese Weise in entsprechende Typen (Number(v)) konvertiert
•Native Funktionen, diese beiden Funktionen haben unterschiedliche Ergebnisse (parseInt(v,radix), parseFloat(v))
•Implizite Konvertierung: JS konvertiert die Variable während der Ausführung in den entsprechenden Typ (Bitberechnung, mathematische Berechnung).
Auch die konvertierten Originalwerte lassen sich einfach in drei Kategorien einteilen: Objekte, Sonderwerte und Strings.
Zu den besonderen Werten in JS gehören die folgenden.
•undefiniert, undefiniert, wenn eine Variable deklariert ist, aber kein Wert zugewiesen ist, oder wenn es sich um den Wert eines Attributs handelt, das in einem Objekt nicht vorhanden ist.
•NaN/Infinity, das sind zwei hartnäckige „Zahlen“ (typeof == number), die Nichtzahlen bzw. unendliche Zahlen darstellen. Es scheint nutzlos zu sein, wenn die Konvertierung in eine Zahl fehlschlägt, ist der Rückgabewert im Grunde NaN.
•null, wird als Objekt mit dem Wert Null verwendet (typeof == object).
•true/false, boolescher Wert, stellt wahr oder falsch dar, entspricht 1/0.
Bei Strings ist auch eine inhaltliche Unterteilung möglich. Gemäß den numerischen Ausdrücken von JS können sie in legale und illegale Ausdrücke unterteilt werden. Es gibt verschiedene Möglichkeiten, gesetzliche Nummern zu klassifizieren:
•Vorzeichen: positives Vorzeichen, negatives Vorzeichen, ohne Vorzeichen
•Basis: Oktal, Dezimal, Hexadezimal
•Wissenschaftliche Notation
•Dezimalzahlen, ganze Zahlen und Abkürzungen für Dezimalzahlen
Basierend auf der obigen Klassifizierung habe ich eine Demo erstellt, um die Ergebnisse verschiedener Methoden und numerischer Konvertierungen zu testen. Der Screenshot unten zeigt die Konvertierung unter Chrome.
Betrachtet man die Ergebnisse, können nur Bitberechnungen jeden Wert in eine endliche Zahl (isFinite) umwandeln. Die Ergebnisse mathematischer Berechnungen und erzwungener Konvertierung sind dieselben.
Die Umrechnung spezieller Werte hängt vom Originalwert und der Umrechnungsmethode ab. Alle parseInt/parseFloat-Konvertierungen schlagen fehl und geben NaN zurück.
•NaN/undefiniert wird mit anderen Methoden in NaN konvertiert;
•Infinity wird von parseInt in NaN konvertiert und die übrigen Methoden ändern seinen Wert nicht;
•null/false/true kann nicht von parseInt/parseFloat konvertiert werden und gibt NaN zurück.
Die Konvertierungsanalyse von Zeichenfolgen hängt hauptsächlich von der Konvertierungsmethode ab. Alle Methoden unterstützen jedoch keine durch Oktaldarstellungen dargestellten Zahlen, sondern werden als entsprechende Dezimalzahlen behandelt.
• Logische Berechnungen konvertieren zulässige Ausdrücke mit Ausnahme negativer Hexadezimalzahlen und verwerfen den Dezimalteil. Ungültige Ausdrücke geben Null zurück.
•Mathematische Berechnungen/Zahlen ähneln logischen Berechnungen, runden jedoch keine unzulässigen Dezimalausdrücke außer leeren Zeichenfolgen und geben NaN zurück.
•parseInt behält auch nur den ganzzahligen Teil bei, aber für unzulässige Ausdrücke nimmt es den zulässigen ganzzahligen Teil (dezimal, hexadezimal, ohne wissenschaftliche Notation) vor der Zeichenfolge und konvertiert ihn, andernfalls gibt es NaN zurück.
•parseFloat ähnelt parseInt, außer dass es den Dezimalteil erkennen und behalten kann und keine Hexadezimalzahlen unterstützt.