Voici un polyfill pour le Number
fonctions de prédicat :
"use strict";
Number.isNaN = Number.isNaN ||
n => n !== n; // only NaN
Number.isNumeric = Number.isNumeric ||
n => n === +n; // all numbers excluding NaN
Number.isFinite = Number.isFinite ||
n => n === +n // all numbers excluding NaN
&& n >= Number.MIN_VALUE // and -Infinity
&& n <= Number.MAX_VALUE; // and +Infinity
Number.isInteger = Number.isInteger ||
n => n === +n // all numbers excluding NaN
&& n >= Number.MIN_VALUE // and -Infinity
&& n <= Number.MAX_VALUE // and +Infinity
&& !(n % 1); // and non-whole numbers
Number.isSafeInteger = Number.isSafeInteger ||
n => n === +n // all numbers excluding NaN
&& n >= Number.MIN_SAFE_INTEGER // and small unsafe numbers
&& n <= Number.MAX_SAFE_INTEGER // and big unsafe numbers
&& !(n % 1); // and non-whole numbers
Tous les principaux navigateurs prennent en charge ces fonctions, sauf isNumeric
qui n'est pas dans la spécification parce que je l'ai inventé. Ainsi, vous pouvez réduire la taille de ce polyfill :
"use strict";
Number.isNumeric = Number.isNumeric ||
n => n === +n; // all numbers excluding NaN
Alternativement, il suffit de mettre en ligne l'expression n === +n
manuellement.
18 votes
Le "duplicate" vérifie s'il s'agit d'une numérique mais pas s'il s'agit d'une valeur numérique intégral valeur. Subtilement différent.
2 votes
+1 Il ne s'agit pas d'un doublon, bien que les informations contenues dans l'autre numéro soient intéressantes et pertinentes. Une valeur numérique n'est pas nécessairement un nombre entier.