0
votes

Pourquoi isNaN ('') ou isNaN ("") est-il faux (un guillemet ou des guillemets doubles sont considérés comme un nombre valide)?

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?


2 commentaires

Utiliser isNan ne suffit pas pour valider un nombre. stackoverflow.com/questions/14636536/...


tc39.es/ecma262/#sec-isnan-number


3 Réponses :


1
votes

isnan ()

La chaîne vide est convertie en 0 qui n'est pas nan


0 commentaires

1
votes

N'importe quelle chose qui ne peut pas être convertie en chiffre doit renvoyer true, mais "" " code> peut être analysé au numéro afin qu'il renvoie false

p>

console.log(parseInt(""))


0 commentaires

0
votes

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


0 commentaires