54 votes

NaN est-il égal à NaN ?

parseFloat("NaN")

renvoie "NaN", mais

 parseFloat("NaN") == "NaN"

renvoie faux. Maintenant, c'est probablement une bonne chose qu'il renvoie false, mais je ne comprends pas comment il en est ainsi. Les créateurs de JavaScript viennent-ils d'en faire un cas particulier ? Parce que sinon je ne peux pas comprendre comment cela renvoie false.

38voto

Phil Points 48960

Lorsqu'une fonction JavaScript renvoie NaN , il ne s'agit pas d'une chaîne littérale mais d'une propriété d'objet dans l'espace global. Vous ne pouvez pas le comparer à la chaîne "NaN" .

Voirhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/NaN

37voto

shelman Points 2017

C'est un cas particulier, NaN est la seule chose en Javascript qui n'est pas égale à elle-même.

Bien que les autres réponses concernant les chaînes par rapport à l'objet NaN soient également correctes.

12voto

Martin Devillers Points 3539

NaN est l'un des rares exemples d'un objet qui n'est pas égal à lui-même. En fait, cette propriété même est utilisée pour implémenter la méthode bool IsNaN(number)

 function isNaN(x)
{ 
    return x != x; 
}

8voto

RiaD Points 15744
  • Lorsque Number (renvoyé par ParseFloat) se compare à string string converti en Number
  • NaN n'est égal à aucun autre objet ( y compris NaN )

Vous obtenez NaN==NaN . C'est faux selon la deuxième règle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X