Skip to content

noGlobalIsNan

  • Rule available since: v1.0.0
  • Diagnostic Category: lint/suspicious/noGlobalIsNan
  • This rule is recommended, which means is enabled by default.
  • This rule has an unsafe fix.
  • The default severity of this rule is error.

Use Number.isNaN instead of global isNaN.

Number.isNaN() and isNaN() do not have the same behavior. When the argument to isNaN() is not a number, the value is first coerced to a number. Number.isNaN() does not perform this coercion. Therefore, it is a more reliable way to test whether a value is NaN.

isNaN({}); // true
code-block.js:1:1 lint/suspicious/noGlobalIsNan  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

isNaN is unsafe. It attempts a type coercion. Use Number.isNaN instead.

> 1 │ isNaN({}); // true
^^^^^
2 │

See the MDN documentation for more details.

Unsafe fix: Use Number.isNaN instead.

1 - isNaN({});·//·true
1+ Number.isNaN({});·//·true
2 2

Number.isNaN({}); // false
biome.json
{
"linter": {
"rules": {
"suspicious": {
"noGlobalIsNan": "error"
}
}
}
}