eslint/use-isnan 正しさ
何をするか
isNaN() 関数の呼び出しを使わずに、NaN と比較することを禁止します。
なぜ問題なのか
JavaScript では、NaN は Number 型の特別な値です。
これは、バイナリ浮動小数点演算に関する IEEE 標準で定義された 64 ビット倍精度形式によって表される「数ではない値」のいずれかを表すために使用されます。
JavaScript における NaN は、自身を含むあらゆる値と等しくないという特異性を持っているため、NaN との比較の結果は混乱を招きます:
NaN === NaNやNaN == NaNはfalseになりますNaN !== NaNやNaN != NaNはtrueになります
したがって、値が 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