Maison  >  Article  >  interface Web  >  JavaScript Quick Bits : mauvaises comparaisons

JavaScript Quick Bits : mauvaises comparaisons

Patricia Arquette
Patricia Arquetteoriginal
2024-10-17 06:18:29724parcourir

JavaScript Quick Bits: Bad Comparisons

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.

Les bases

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.

Comment ça se passe

if (!(value <= 10)) {
  // ...

Si vous tombez sur ce code, vous pouvez le remplacer par if (a > 10) { sans hésitation.

  • C'est plus court.
  • C'est plus facile à lire.
  • Pour toutes les valeurs normales elles sont les mêmes.

Pourquoi c'est important

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.

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn