Quelle est la différence entre parseInt(string) et Number(string) en JavaScript ?
- String en int utiliser parseInt ou nombre ? (4 réponses )
Réponses
Trop de publicités?parseInt("123hui")
renvoie 123
Number("123hui")
les retours NaN
En d'autres mots, parseInt()
analyse jusqu'à la première non-chiffres et renvoie ce qu'il a analysé. Number()
veut convertir l'ensemble de la chaîne en un nombre, qui peut aussi être un float BTW.
EDIT: Lucero a commenté sur la base qui peut être utilisé conjointement avec d' parseInt()
. Pour ce qui est concerné, veuillez voir le MÉDECIN de LA réponse ci-dessous (je ne vais pas vous copie ici, le doc doit avoir une juste part de la gloire...).
Le premier prend deux paramètres:
parseInt(string, radix)
Le radix paramètre est utilisé pour spécifier le système de numération à être utilisé, par exemple, la base 16 (hexadécimal) indique que le numéro de la chaîne doit être analysé à partir d'un nombre hexadécimal en un nombre décimal.
Si le radix paramètre est omis, JavaScript suppose les conditions suivantes:
- Si la chaîne commence par "0x", le
radix est de 16 (hexadécimal) - Si la chaîne commence par "0", l'
radix est de 8 (octal). Cette fonctionnalité
est obsolète - Si la chaîne commence par tout autre valeur, la base 10 (décimal)
L'autre fonction que vous avez mentionné ne prend qu'un seul paramètre:
Number(object)
La fonction Number() convertit l'objet en argument un nombre qui représente la value de l'objet.
Si la valeur ne peut pas être converti en nombre, NaN est renvoyé.
L' parseInt
fonction vous permet de spécifier une variété de rayons pour la chaîne d'entrée et est limitée à des valeurs entières.
parseInt('Z', 36) === 35
L' Number
constructeur appelle une fonction qui permet d'analyser la chaîne avec une grammaire et est limité à la base 10 et en base 16.
StringNumericLiteral ::: StrWhiteSpaceopt StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt StrWhiteSpace ::: StrWhiteSpaceChar StrWhiteSpaceopt StrWhiteSpaceChar ::: Les espaces LineTerminator StrNumericLiteral ::: StrDecimalLiteral HexIntegerLiteral StrDecimalLiteral ::: StrUnsignedDecimalLiteral + StrUnsignedDecimalLiteral -StrUnsignedDecimalLiteral StrUnsignedDecimalLiteral ::: L'infini DecimalDigits . DecimalDigitsopt ExponentPartopt. DecimalDigits ExponentPartopt DecimalDigits ExponentPartopt DecimalDigits ::: DecimalDigit DecimalDigits DecimalDigit DecimalDigit ::: l'un des 0 1 2 3 4 5 6 7 8 9 ExponentPart ::: ExponentIndicator SignedInteger ExponentIndicator ::: l'un des e E SignedInteger ::: DecimalDigits + DecimalDigits -DecimalDigits HexIntegerLiteral ::: 0x HexDigit 0X HexDigit HexIntegerLiteral HexDigit HexDigit ::: l'un des 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
Additif à @sjngm de réponse:
Ils ont tous deux également ignorer les espaces blancs:
var foo = " 3 "; console.log(parseInt(foo); / / 3 console.log(Nombre(foo); / / 3
Il n'est pas tout à fait correct. Comme sjngm a écrit parseInt analyse de la chaîne de nombre premier. Il est vrai. Mais le problème, c'est quand vous voulez analyser, séparé par des espaces ie. "12 345". Dans ce cas
parseInt("12 345")
sera de retour12
au lieu de12345
. Afin d'éviter cette situation, vous devez garniture des espaces avant l'analyse de nombre. Ma solution serait:var number=parseInt("12 345".replace(/\s+/g, ''),10);
Remarquer une petite chose que j'ai utilisé dans parseInt() fonction.
parseInt("string",10)
permettra de définir le nombre de décimales format. Si vous souhaitez analyser chaîne comme "08", vous obtiendrez 0 parce que 8 n'est pas un nombre octal.L'explication est ici