Maison > interface Web > js tutoriel > Javascript Nan Quirks: fonctionnalités, pas de défauts.

Javascript Nan Quirks: fonctionnalités, pas de défauts.

Linda Hamilton
Libérer: 2025-01-27 18:32:10
original
828 Les gens l'ont consulté

JavaScript NaN Quirks: Features, Not Flaws.

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)

Qu'est-ce que NaN ?

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>
Copier après la connexion

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.

Comportement étrange de NaN

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>
Copier après la connexion

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>
Copier après la connexion

Pourquoi NaN est un nombre

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.

Exemple

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal