Skip to content
← Back to rules

eslint/use-isnan Correctness

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 位格式所表示的任何“不是数字”的值。

由于 NaN 在 JavaScript 中是独一无二的,不会等于任何值,包括它自身,
因此与 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

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "use-isnan": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "use-isnan": "error",
  },
});
bash
oxlint --deny use-isnan

版本

此规则于 v0.0.3 中添加。

参考资料