Wie werden parseInt()
y Number()
sich bei der Umwandlung von Zeichenketten in Zahlen unterschiedlich verhalten?
Antworten
Zu viele Anzeigen?parseInt()
-> Analysiert eine Zahl in das angegebene Redix.
Number()
-> Konvertiert den angegebenen Wert in sein numerisches Äquivalent oder in NaN, wenn dies nicht möglich ist.
Daher sollten wir für die Umwandlung eines nicht numerischen Wertes in eine Zahl immer die Funktion Number() verwenden.
z. B.
Number("")//0
parseInt("")//NaN
Number("123")//123
parseInt("123")//123
Number("123ac") //NaN,as it is a non numeric string
parsInt("123ac") //123,it parse decimal number outof string
Number(true)//1
parseInt(true) //NaN
Es gibt verschiedene Eckfälle zu parseInt()
Funktionen, da sie eine Redix-Umwandlung vornimmt. Daher sollten wir es vermeiden, die Funktion parseInt() zum Zwecke der Umkehrung zu verwenden.
Um nun zu prüfen, ob der angegebene Wert numerisch ist oder nicht, sollten wir die native isNaN()
Funktion
Es ist eine gute Idee, sich von parseInt fernzuhalten und Number und Math.round zu verwenden, es sei denn, Sie benötigen hexadezimale oder oktale Werte. Beide können Strings verwenden. Warum sollte man sich davon fernhalten?
parseInt(0.001, 10)
0
parseInt(-0.0000000001, 10)
-1
parseInt(0.0000000001, 10)
1
parseInt(4000000000000000000000, 10)
4
Sie schlachtet sehr große oder sehr kleine Zahlen völlig aus. Merkwürdigerweise funktioniert es normal, wenn diese Eingaben eine Zeichenkette sind.
parseInt("-0.0000000001", 10)
0
parseInt("0.0000000001", 10)
0
parseInt("4000000000000000000000", 10)
4e+21
Anstatt zu riskieren, dass schwer zu findende Bugs mit diesem und den anderen erwähnten Problemen auftreten, würde ich einfach vermeiden parseInt
es sei denn, Sie müssen etwas anderes als die Basis 10 parsen. Number
, Math.round
, Math.floor
y .toFixed(0)
können alle die gleichen Dinge tun parseInt
verwendet werden kann, ohne dass diese Art von Fehlern auftritt.
Wenn Sie parseInt wirklich für einige seiner anderen Eigenschaften verwenden wollen oder müssen, verwenden Sie es niemals, um Floats in Ints zu konvertieren.