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 :

javascriptfunction 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

javascriptisFinite(valeur);

Exemple

Maintenant isFinite affichera true, car le paramètre est un nombre :

javascriptlet num = 3;
console.log(isFinite(num));

Résultat de l'exécution du code :

javascripttrue

Exemple

Maintenant isFinite affichera false, car le paramètre n'est pas un nombre :

javascriptlet num = 'abcde';
console.log(isFinite(num));

Résultat de l'exécution du code :

javascriptfalse

Exemple

Maintenant isFinite affichera false, car le paramètre est l'infini :

javascriptlet num = Infinity;
console.log(isFinite(num));

Résultat de l'exécution du code :

javascriptfalse

Exemple

Maintenant isFinite affichera false, car 1/0 - c'est essentiellement Infinity (l'infini) :

javascriptlet num = 1 / 0;
console.log(isFinite(num));

Résultat de l'exécution du code :

javascriptfalse

Exemple

Maintenant isFinite affichera true, car une chaîne vide, qui n'est pas un nombre, est une exception :

javascriptlet num = '';
console.log(isFinite(num));

Résultat de l'exécution du code :

javascripttrue

Voir aussi

  • la fonction isNaN,
    qui effectue une vérification pour NaN
  • l'opérateur typeof,
    qui détermine le type de données