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 == NaN 的结果为 false
  • NaN !== NaNNaN != NaN 的结果为 true

因此,应使用 Number.isNaN() 或全局 isNaN() 函数来检测一个值是否为 NaN。

示例

此规则的 错误 代码示例:

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

配置

此规则接受一个配置对象,包含以下属性:

enforceForIndexOf

type: boolean

default: false

是否禁止将 NaN 作为 indexOflastIndexOf 方法的参数

enforceForSwitchCase

type: boolean

default: true

是否禁止在 switch 语句的 case 条件和判别式中使用 NaN

如何使用

通过配置文件或 CLI 启用此规则的方法如下:

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

参考资料