J'ai besoin d'une fonction intégrée qui vérifie si une variable contient un nombre valide en Javascript, à la suite de ce lien que j'ai essayé d'utiliser est isNaN , cependant quand j'utilise un guillemet ('') ou deux guillemets (""), le résultat est toujours faux .
Comment se fait-il qu'un guillemet ou des guillemets doubles soient considérés comme un nombre valide?
3 Réponses :
La chaîne vide est convertie en 0 qui n'est pas nan p> blockQuote>
N'importe quelle chose qui ne peut pas être convertie en chiffre doit renvoyer true, mais p> "" " code> peut être analysé au numéro afin qu'il renvoie false console.log(parseInt(""))
La conversion d'une chaîne vide en Number sera évaluée à 0. Il en va de même pour les booléens ( + false = 0, + true = 1) et null . Si cela n'est pas souhaité, vous pouvez créer votre propre fonction pour déterminer si une valeur (chaîne) peut être convertie en Number . Voir aussi (les exemples @) MDN .
.as-console-wrapper { top: 0; max-height: 100% !important; }
const canConvert2Number = value =>
!value ||
value === false ||
value === true ||
value === null ||
String(value).trim().length < 1
? false
: !isNaN(+value);
console.log(canConvert2Number(null)); //false
console.log(canConvert2Number("")); //false
console.log(canConvert2Number()); //false
console.log(canConvert2Number(false)); //false
console.log(canConvert2Number(true)); //false
console.log(canConvert2Number("[]")); //false
console.log(canConvert2Number("{}")); //false
console.log(canConvert2Number("20.4")); //true
console.log(canConvert2Number("10E4")); //true
Utiliser isNan ne suffit pas pour valider un nombre. stackoverflow.com/questions/14636536/...
tc39.es/ecma262/#sec-isnan-number