The Standard Library contains utilities that are functionally broken but remain for legacy reasons.
Number isNaN
Use Number.isNaN
instead of global isNaN
. The global isNaN
coerces non-numbers to numbers, returning true for anything that coerces to NaN
. If this behavior is desired, make it explicit.
ESLint: no-restricted-globals
Examples
⇣ Incorrect code for this rule:
isNaN("1.2"); // false
isNaN("1.2.3"); // true
⇡ Correct code for this rule:
Number.isNaN("1.2.3"); // false
Number.isNaN(Number("1.2.3")); // true
Number isFinite
Use Number.isFinite
instead of global isFinite
. The global isFinite
coerces non-numbers to numbers, returning true for anything that coerces to a finite number. If this behavior is desired, make it explicit.
ESLint: no-restricted-globals
Examples
⇣ Incorrect code for this rule:
isFinite("2e3"); // true
⇡ Correct code for this rule:
Number.isFinite("2e3"); // false
Number.isFinite(parseInt("2e3", 10)); // true