Maison > Article > interface Web > JavaScript Quick Bits : mauvaises comparaisons
De petits insectes peuvent s'infiltrer depuis des endroits inattendus. De mauvaises valeurs peuvent faire échouer votre logique conditionnelle de manière inattendue. Jetons un coup d'œil rapide aux maux de tête liés aux mauvaises inégalités.
Ces fonctions ne sont pas les mêmes. Ils sont pour la plupart identiques mais ils ont une différence très spécifique. Le voyez-vous ?
const one = (a) => a > 10; const two = (a) => !(a <= 10);
Chaque fois que nous effectuons des vérifications d'inégalité avec undefined ou NaN, le résultat est faux. Si nous ne vérifions pas explicitement les cas extrêmes, deux vérifications « équivalentes » peuvent renvoyer des réponses différentes.
if (!(value <= 10)) { // ...
Si vous tombez sur ce code, vous pouvez le remplacer par if (a > 10) { sans hésitation.
Mais nous n'obtenons pas toujours des valeurs normales. Cela pourrait être une modification radicale de votre code. Cela pourrait rendre très difficile la résolution des défauts. Rien dans ce code simple ne suggère que nous pourrions rencontrer de « mauvaises » valeurs, vous pourriez donc les manquer complètement.
La sécurité des types ne résoudra pas ce problème non plus, car NaN est un nombre... c'est juste un mauvais.
Si vous rencontrez une condition étrange comme celle-ci dans votre code, demandez-vous ce qui arrive à la mauvaise valeur si vous la modifiez. J'espère que votre code vous évitera d'obtenir une mauvaise valeur et d'effectuer de mauvais calculs, mais être un peu sur la défensive face à ces changements peut vous épargner bien des ennuis à l'avenir.
Dans des cas comme ceux-ci, il est généralement préférable d'avoir des contrôles explicites pour les mauvaises valeurs. Ceux-ci communiquent clairement les entrées possibles et les résultats attendus aux autres développeurs.
if (Number.isNaN(value) || value > 10) { // ...
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!