ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の豆知識: 悪い比較

JavaScript の豆知識: 悪い比較

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-17 06:18:29726ブラウズ

JavaScript Quick Bits: Bad Comparisons

小さな虫は思わぬところから侵入することがあります。値を誤ると、条件付きロジックが予期しない形で失敗する可能性があります。ひどい不平等がもたらす頭痛の種を簡単に見てみましょう。

基本

これらの機能は同じではありません。これらはほとんど同じですが、非常に具体的な違いがあります。見えますか?

const one = (a) => a > 10;
const two = (a) => !(a <= 10);

未定義または NaN を使用して不等価チェックを実行すると、結果は常に false になります。エッジケースを明示的にチェックしない場合、2 つの「同等の」チェックで異なる答えが返される可能性があります。

それはどのように起こるか

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

そのコードを見つけたら、迷わず if (a > 10) { に変更してください。

  • 短いです。
  • 読みやすくなりました。
  • すべての正常値 は同じです。

なぜ重要なのか

しかし、常に正常な値が得られるわけではありません。これはコードに対する重大な変更となる可能性があります。欠陥のトラブルシューティングが非常に困難になる可能性があります。この単純なコードには「不正な」値が発生する可能性を示唆するものは何もないため、完全に見逃してしまう可能性があります。

NaN は数値であるため、タイプ セーフティでもこれは修正されません...それは単なる 悪いものです。

結論

コード内でこのような奇妙な状態に遭遇した場合は、間違った値を変更するとどうなるかを自問してください。あなたのコードが間違った値を取得したり、間違った計算を実行したりすることを防ぐことができれば幸いですが、これらの変更について少し防御的になることで、将来の自分のために多くの問題を避けることができます。

このような場合、通常は不正な値を明示的にチェックする方が良いでしょう。これらは、考えられる入力と期待される結果を他の開発者に明確に伝えます。

if (Number.isNaN(value) || value > 10) {
  // ...

以上がJavaScript の豆知識: 悪い比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。