J'ai vu cela dans les sources d'une lib, et confus. Je pense, il évalue toujours à « false
». Quelle est la signification de l'utilisation de cela?
Il vérifie si v
est NaN
:
if( v !== v ){ //'v' is NaN here }
De la norme :
Un moyen fiable pour le code ECMAScript pour tester si une valeur X est un NaN est une expression de la forme X! == X. Le résultat sera vrai si et seulement si X est un NaN.
Pourquoi ne pas utiliser simplement isNaN()
?
La réponse est simple: " isNaN()
n'est pas assez fiable ". Voici les cas, quand isNaN()
sera échoué:
isNaN("NaN") //true isNaN(undefined) //true
Il teste "Not A Number": NaN !== NaN
équivaut à true
De MDN :
La valeur initiale de NaN est Not-A-Number – la même que la valeur de Number.NaN. Dans les navigateurs modernes, NaN est une propriété non configurable et non accessible à l'écriture. Même si ce n'est pas le cas, évitez de l'annuler.
Il est plutôt rare d'utiliser NaN dans un programme. C'est la valeur retournée lorsque les fonctions Math échouent
(Math.sqrt(-1))
ou lorsqu'une fonction essayant d'analyser un nombre échoue(parseInt("blabla"))
.