Maison > Article > interface Web > NaN en JavaScript
NaN
).Décrit dans l'article NaN de MDN :
) ou lorsque vous essayez d'analyser une chaîne en un nombre mais échoue (par exemple :- L'attribut global NaN représente la valeur de Not-A-Number.
- NaN est une propriété d'un objet global.
- La valeur initiale de l'attribut NaN est NaN, identique à la valeur de Number.NaN.
- apparaît généralement comme la valeur de retour d'une méthode mathématique lorsqu'un calcul échoue (par exemple :
Math.sqrt(-1)
Dans ES5, l'attribut NaN est un attribut non configurable et non inscriptible. Mais dans ES3, la valeur de cette propriété peut être modifiée, mais l'écrasement doit être évité.parseInt("blabla")
NaN
Type NaN Number
typeof NaN // "number"C'est-à-dire que
Infini divisé à l'infini,Le chapitre "3.1.3 Opérations arithmétiques en JavaScript" du Guide définitif de JavaScript a une description :
NaN
sera renvoyé en prenant la racine carrée de tout nombre négatif ou en utilisant un opérateur arithmétique avec un opérande qui n'est pas un nombre ou ne peut pas être converti en nombre.
La chaîne est analysée en un nombreNaN
Les résultats suivants sont tous
:Infinity / Infinity; // 无穷大除以无穷大 Math.sqrt(-1); // 给任意负数做开方运算 'a' - 1; // 算数运算符与不是数字或无法转换为数字的操作数一起使用 'a' * 1; 'a' / 1; parseInt('a'); // 字符串解析成数字 parseFloat('a');Qu'est-ce que c'est que "l'opération qui ne peut pas être convertie en nombres" ici ? Regardons d'abord les exemples suivants d'opérations qui peuvent être converties en nombres :
Math.sqrt('4'); // 2 2 * '2'; // 4 '4' / 2; // 2Opérations qui ne peuvent pas être converties en nombresCela implique la
conversion de type JavaScript
concept.Le chapitre "3.8 Conversion de type" du Guide définitif JavaScript décrit :
Si JavaScript attend un nombre, il convertira la valeur donnée en nombre (si le résultat de la conversion n'a aucun sens, renvoie NaN). Number()
Vous pouvez utiliser la méthode +
pour une conversion de type explicite, par exemple :
Number('1'); // 1 Number(null); // 0 Number('a'); // NaN
Vous pouvez également utiliser l'opérateur unaire parseInt()
pour une conversion implicite, par exemple : parseFloat()
+'1'; // 1 +null; // 0 +'a'; // NaNVous pouvez également utiliser les fonctions globales
et parseInt()
pour analyser des entiers et des nombres à virgule flottante : parseFloat()
parseInt('12'); // 12 parseInt('12a'); // 12 parseInt('a12'); // NaN parseInt(null); // NaN
etAnalysez autant de caractères numériques que possible et ignorez le contenu suivant ; si le premier caractère autre qu'un espace n'est pas un chiffre, il renverrapeuvent être simplement compris comme :
NaN
Number()
parseInt()``parseFloat()
null
Il est à noter que
, certaines valeurs d'entrée sont traitées différemment, comme
.值 | 数字 |
---|---|
undefined | NaN |
null | 0 |
true | 1 |
false | 0 |
"" (空字符串) | 0 |
"1.2" (非空,数字) | 1.2 |
"one" (非空,非数字) | NaN |
[] (任意对象) | 0 |
[9] (一个数字元素) | 9 |
['a'] (其他数组) | NaN |
function(){} (任意函数) | NaN |
isNaN()
Comment juger NaNNaN
isNaN()
. comportement étrange
Dans l'article isNaN() de MDN, il y a une explication du « comportement étrange » affiché par leparamètre non numériqueIl tentera d'abord de convertir ce paramètre en une valeur numérique, puis jugera si le résultat converti est:
NaN
.pour une valeur nonPar conséquent, il peut être déroutant de renvoyer une valeur
NaN
false
qui peut être contrainte à une valeur valide.
L'exemple suivant :isNaN('37'); // false: 可以被转换成数值 37 isNaN(''); // false: 空字符串被转换成 0
Number.isNaN()
Juger strictement NaNRéférez-vous au code Polyfill de dans MDN :
typeof value === 'number' && isNaN(value)Tutoriel recommandé : "Tutoriel JS》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!