Fonction isFinite
La fonction isFinite permet de vérifier si un paramètre
est un nombre fini (c'est-à-dire
non pas une chaîne, un tableau, etc. et non plus l'infini
positif ou négatif).
Comment fonctionne cette fonction : elle renvoie false,
si le nombre est l'infini positif ou négatif
(c'est-à-dire Infinity)
ou n'est pas un nombre (c'est-à-dire NaN),
dans les autres cas, elle renvoie true.
C'est-à-dire que les chaînes, les tableaux, etc. seront convertis
en NaN et renverront par conséquent false.
Cependant, il existe des exceptions : une chaîne vide
'' renvoie true, une chaîne contenant des espaces ' '
renvoie également true, null
renvoie true, pour les valeurs true et false
la fonction renvoie également true.
Cela se produit parce que ces valeurs
sont converties en nombres, et non en NaN.
Si vous avez besoin d'une vérification vraiment précise
pour un nombre, qui ne considère pas comme nombre une chaîne
d'espaces, les valeurs booléennes et les valeurs spéciales
- utilisez la fonction suivante isNumeric :
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Voyons comment elle fonctionne.
La fonction isFinite convertit le paramètre
en nombre et renvoie true, si ce n'est pas Infinity,
-Infinity ou NaN.
Ainsi, la partie droite éliminera les valeurs
clairement non numériques, mais laissera des valeurs
comme true, false, null, une chaîne vide '' et
une chaîne d'espaces, car elles sont correctement converties
en nombres.
Pour éliminer ces valeurs, la fonction
parseFloat est nécessaire,
qui pour true, false, null, '', ' '
renverra NaN. C'est ainsi que fonctionne parseFloat : elle
convertit le paramètre en chaîne, c'est-à-dire que true,
false, null deviennent 'true', 'false',
'null', puis lit un nombre à partir de celle-ci,
une chaîne vide et une chaîne d'espaces
donnant NaN. Ensuite, le résultat de parseFloat est traité
à l'aide de !isNaN,
pour obtenir true ou false au lieu de NaN.
En conséquence, tout est éliminé sauf les chaînes de nombres
et les nombres ordinaires.
Syntaxe
isFinite(valeur);
Exemple
Maintenant isFinite affichera true,
car le paramètre est un nombre :
let num = 3;
console.log(isFinite(num));
Résultat de l'exécution du code :
true
Exemple
Maintenant isFinite affichera false,
car le paramètre n'est pas un nombre :
let num = 'abcde';
console.log(isFinite(num));
Résultat de l'exécution du code :
false
Exemple
Maintenant isFinite affichera false,
car le paramètre est l'infini :
let num = Infinity;
console.log(isFinite(num));
Résultat de l'exécution du code :
false
Exemple
Maintenant isFinite affichera false,
car 1/0 - c'est essentiellement Infinity
(l'infini) :
let num = 1 / 0;
console.log(isFinite(num));
Résultat de l'exécution du code :
false
Exemple
Maintenant isFinite affichera true,
car une chaîne vide, qui n'est pas un nombre,
est une exception :
let num = '';
console.log(isFinite(num));
Résultat de l'exécution du code :
true