Différence entre isNaN et Number.isNaN
Presque tout le monde sait ce qu’est «isNaN» et comment l’utiliser. Cela signifie « est-ce que cette chose ressemble à un nombre, vraiment un nombre ou pas? » Il renvoie vrai si donné est « Pas un nombre ». Je suppose que vous avez compris. Ok, voici maintenant l’affaire; Quelle est la différence entre isNaN et Number.isNaN?
Avant de commencer à expliquer, je tiens à remercier mon ami Rafael de m’avoir encouragé à écrire.
Commençons par isNaN. Il s’agit d’une fonction globale que vous pouvez appeler de partout. Voyons cela en action:
const badDivision = 17 / "something"; // NaN
isNaN(badDivision); // true
C’est aussi simple que cela, mais il y a quelques erreurs de direction. Voici les exemples:
Comme vous pouvez le voir selon l’implémentation isNaN traite la valeur de la chaîne comme un nombre et renvoie le résultat en fonction de cela. Vérifiez `isNaN (‘blabla’)`
Donc, pour résoudre ces idées fausses, nous avons La méthode statique Number.isNaN est fournie avec EcmaScript 2015 # Number.isNaN
Que fait-elle?
Dans mon cas, j’ai une méthode qui accepte deux paramètres comme type de nombre et fait une animation sur la mise à l’échelle de la cible objet. Après avoir fait peu de refactorisation, j’ai eu un comportement étrange. Oui, j’aurais dû écrire des tests unitaires, honte à moi. Quoi qu’il en soit, dans certains cas, la méthode reçoit des paramètres non définis. Je dois donc les vérifier.
J’ai écrit ceci:
Mon insouciance me conduit à une mauvaise logique. Parce que Number.isNaN (non défini) me renverra faux. (old isNaN (undefined) renvoie true) Donc j’ai changé comme ceci:
function animate(targetScaleX, targetScaleY) {
if (!Number.isNaN(targetScaleX * targetScaleY)) {
return;
} // Do Animation
}
Donc ça semble fonctionner. Mais je voulais me soucier de chaque échec possible. Peut-être que je pourrais recevoir null au lieu d’indéfini. Si je reçois null, ma logique échouera. Pourquoi?
null * null; // 0
null * 8 // 0
Je pense que vous voyez la chose. J’ai donc mis à jour le code comme ceci:
Mon objectif était de vérifier que deux valeurs étaient indéfinies ou nulles. Et mon parcours finit par écrire cet article et mettre à jour mes connaissances. La mise en œuvre n’est pas sophistiquée, je sais mais le voyage a été éducatif.