Dans JavaScript
, nous utilisons généralement isNaN()
pour vérifier si une valeur est NaN(Not-a-Number)
. Cependant, ES6 a introduit Number.isNaN()
des méthodes qui se ressemblent, mais il existe des différences subtiles entre elles, que cet article révélera.
1. isNaN()
est une fonction globale, mais Number.isNaN()
c'est Number
une méthode statique de .
Examinons d’abord leur utilisation de base.
// 代码
isNaN(NaN); // true
isNaN("Hello"); // true
Number.isNaN(NaN); // true
Number.isNaN("Hello"); // false
Comme indiqué ci-dessus, isNaN()
la fonction tente de convertir son argument en nombre, puis vérifie si le résultat est NaN
. C'est pourquoi isNaN("Hello") renvoie true
, car essayer de convertir une chaîne non numérique en nombre renverra NaN
.
En revanche, Number.isNaN()
aucune tentative n’est faite pour transformer l’argument en un nombre. NaN
Il ne sera renvoyé que si le paramètre lui-même est true
.
2. isNaN()
Il y aura des problèmes avec les paramètres de type non numérique.
C'est isNaN()
un piège courant :
// 代码
isNaN("123"); // false
Dans cet exemple, une chaîne isNaN("123")
est renvoyée même si elle ne peut pas être interprétée comme un nombre. En effet, il essaie d'abord de convertir la chaîne en nombre et peut être converti en nombre , il renvoie donc .false
"123"
isNaN()
"123"
123
false
Mais Number.isNaN()
cela ne sera pas trompeur pour les paramètres non numériques :
// 代码
Number.isNaN("123"); // false
3. Scénarios d'utilisation
À utiliser isNaN()
lorsque vous devez vérifier si une valeur est NaN
et lorsque vous devez traiter des valeurs non numériques comme NaN
.
À utiliser Number.isNaN()
lorsque vous devez vérifier strictement si une valeur est un NaN
, sans traiter les valeurs non numériques comme NaN
.
Résumer
isNaN()
et Number.isNaN()
les deux ont leur place, mais soyez conscient des différences subtiles entre eux. Le choix de la fonction appropriée dépend de votre cas d'utilisation, si vous devez vérifier plus précisément si une valeur est NaN, Number.isNaN()
c'est le meilleur choix. NaN
Cela peut être utilisé si vous souhaitez que les valeurs non numériques soient également traitées isNaN()
.
Comprendre ces différences peut vous aider à écrire JavaScript
un code plus fiable et à éviter les erreurs inattendues provoquées par les conversions de types.