Skip to content

noGlobalIsNan (since v1.0.0)

Diagnostic Category: lint/suspicious/noGlobalIsNan

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
suspicious/noGlobalIsNan.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