La différence entre parseFloat et le Nombre
parseFloat
/parseInt
est pour l'analyse d'une chaîne de caractères, alors que Number
/+
est pour le fait de contraindre une valeur à un certain nombre. Ils se comportent différemment. Mais d'abord, regardons où ils se comportent de la même:
parseFloat('3'); // => 3
Number('3'); // => 3
parseFloat('1.501'); // => 1.501
Number('1.501'); // => 1.501
parseFloat('1e10'); // => 10000000000
Number('1e10'); // => 10000000000
Donc, tant que vous avez de la norme d'entrée numérique, il n'y a pas de différence. Toutefois, si votre entrée commence par un nombre, puis contient d'autres caractères, parseFloat
tronque le numéro de la chaîne, tandis que Number
donne NaN
(pas un nombre):
parseFloat('1x'); // => 1
Number('1x'); // => NaN
En outre, Number
comprend hexadécimal entrée alors que l' parseFloat
n'est pas:
parseFloat('0x10'); // => 0
Number('0x10'); // => 16
Mais Number
des actes bizarres avec des chaînes vides ou des chaînes de caractères ne contenant que des espaces blancs:
parseFloat(''); // => NaN
Number(''); // => 0
parseFloat(' \r\n\t'); // => NaN
Number(' \r\n\t'); // => 0
Sur l'ensemble, je trouve Number
pour être plus raisonnable, j'ai donc presque toujours utiliser Number
personnellement (et vous verrez que beaucoup de l'intérieur de fonctions JavaScript utiliser Number
). Si quelqu'un tape '1x'
je préfère afficher une erreur plutôt que de les traiter comme si elles avaient tapé '1'
. La seule fois où j'ai vraiment faire une exception, c'est quand je suis la conversion d'un style à un certain nombre, auquel cas parseFloat
est utile parce que les styles viennent dans une forme comme '3px'
, auquel cas je souhaite supprimer l' 'px'
de la partie et vient d'obtenir l' 3
, donc je trouve parseFloat
utile ici. Mais vraiment celui que vous choisissez est à vous et les formes d'entrée que vous souhaitez accepter.
Notez que l'utilisation de l'unaire +
opérateur est exactement le même que l'utilisation de Number
en fonction:
Number('0x10'); // => 16
+'0x10'; // => 16
Number('10x'); // => NaN
+'10x'; // => NaN
Number('40'); // => 40
+'40'; // => 40
Donc j'ai l'habitude de simplement utiliser +
pour faire court. Aussi longtemps que vous savez ce qu'il fait, je le trouve facile à lire.