Skip to content

eslint/use-isnan Correctness

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

What it does

Disallows checking against NaN without using isNaN() call.

Why is this bad?

In JavaScript, NaN is a special value of the Number type. It’s used to represent any of the “not-a-number” values represented by the double-precision 64-bit format as specified by the IEEE Standard for Binary Floating-Point Arithmetic.

Because NaN is unique in JavaScript by not being equal to anything, including itself, the results of comparisons to NaN are confusing:

  • NaN === NaN or NaN == NaN evaluate to false
  • NaN !== NaN or NaN != NaN evaluate to true

Therefore, use Number.isNaN() or global isNaN() functions to test whether a value is NaN.

Example

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

References

Released under the MIT License.