Skip to content
← Back to rules

eslint/use-isnan 正しさ

This rule is turned on by default.
🛠️ An auto-fix is available for this rule for some violations.

何をするか

isNaN() 関数の呼び出しを使わずに、NaN と比較することを禁止します。

なぜ問題なのか

JavaScript では、NaN は Number 型の特別な値です。
これは、バイナリ浮動小数点演算に関する IEEE 標準で定義された 64 ビット倍精度形式によって表される「数ではない値」のいずれかを表すために使用されます。

JavaScript における NaN は、自身を含むあらゆる値と等しくないという特異性を持っているため、NaN との比較の結果は混乱を招きます:

  • NaN === NaNNaN == NaNfalse になります
  • NaN !== NaNNaN != NaNtrue になります

したがって、値が NaN かどうかをテストするには Number.isNaN() またはグローバル関数 isNaN() を使用する必要があります。

このルールに違反する誤りのあるコード例

javascript
foo == NaN;
foo === NaN;
foo <= NaN;
foo > NaN;

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます。

enforceForIndexOf

type: boolean

default: false

indexOf および lastIndexOf における引数としての NaN の使用を禁止するかどうか

enforceForSwitchCase

type: boolean

default: true

switch 文のケースや判別子における NaN の使用を禁止するかどうか

使い方

設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:

json
{
  "rules": {
    "use-isnan": "error"
  }
}
bash
oxlint --deny use-isnan

参照