NaN (Not-a-Number) en JavaScript confond souvent les développeurs. Mais en fait, NaN n'est pas une simple valeur aberrante, mais une valeur sentinelle , représentant un nombre invalide. Ce n’est pas un nombre manquant, ni un zéro, mais un signal clair que quelque chose s’est mal passé dans une opération numérique. (Ou, je ne sais pas, ce n’est pas moi qui ai créé le langage)
NaN provient de la spécification IEEE 754 , qui définit le fonctionnement des nombres en JavaScript. Ce n'est pas un bug ou un bug, c'est une partie intentionnelle du langage. Considérez NaN comme un signal d'alarme qui dit "hé, cette opération n'a pas de sens mathématique".
Par exemple :
<code class="language-javascript">console.log(Math.sqrt(-1)); // NaN</code>
Vous ne pouvez pas calculer la racine carrée d'un nombre négatif (du moins dans la plage réelle), donc JavaScript renvoie NaN. C'est comme demander « Quelle est la couleur du bonheur ? » : c'est une question sans réponse significative.
Là où les choses deviennent bizarres, c'est que NaN est le seul nombre en JavaScript qui n'est pas égal à lui-même :
<code class="language-javascript">console.log(NaN === NaN); // false</code>
Ce n'est pas un bug, mais par conception. Selon la spécification ECMAScript, NaN est « non ordonné » par rapport aux autres valeurs, y compris lui-même. Cela signifie que vous ne pouvez pas utiliser ===
pour vérifier NaN. Vous devez utiliser Number.isNaN()
:
<code class="language-javascript">console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN("Hello")); // false</code>
Curieusement, NaN appartient techniquement au type de nombre. Oui, vous avez bien lu. Le résultat de typeof NaN
est "nombre". En effet, NaN fait partie de la spécification IEEE 754, qui définit les opérations numériques. Lorsqu'une opération numérique échoue, cela n'a aucun sens de renvoyer undefined
, null
ou -1
- aucun d'entre eux n'est un nombre. Au lieu de cela, JavaScript renvoie NaN, qui est toujours un nombre, juste un nombre invalide.
Supposons que vous construisiez une fonction pour calculer la moyenne d'un tableau de nombres. Que se passe-t-il si le tableau contient des valeurs non numériques ?
<code class="language-javascript">function calculateAverage(arr) { const sum = arr.reduce((acc, val) => acc + val, 0); return sum / arr.length; } console.log(calculateAverage([1, 2, "three", 4])); // NaN</code>
Ici, la chaîne "trois" ne peut pas être ajoutée à la somme, donc le résultat est NaN. C'est un excellent exemple de la façon dont NaN peut se faufiler dans votre code et provoquer un comportement inattendu.
Malgré ces bizarreries, NaN reste un outil puissant. C'est la seule valeur de retour significative lorsqu'une opération numérique échoue, et nous devons apprendre à utiliser le langage.
NaN est un concept unique et important en JavaScript. Ce n'est pas seulement une valeur, c'est un signal que quelque chose ne va pas dans vos calculs.
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!