Number.isNaN()
isNaN(number) Returns:
boolean · Added in vES6 · Updated March 13, 2026 · Number number nan isnan
The Number.isNaN() method determines whether the passed value is NaN. Unlike the global isNaN() function, this method does not coerce its argument to a number, making it more reliable for type checking.
Syntax
Number.isNaN(value)
Parameters
| Parameter | Type | Description |
|---|---|---|
value | any | The value to check |
Return Value
Returns true if the value is exactly NaN, false otherwise.
Examples
Basic Usage
Number.isNaN(NaN); // true
Operations That Produce NaN
Number.isNaN(0/0); // true (division of zero by zero)
Number.isNaN(0 * NaN); // true (multiplication with NaN)
Number.isNaN(Math.sqrt(-1)); // true (square root of negative)
Number.isNaN(Number('hello')); // true (invalid number parsing)
Values That Are Not NaN
Number.isNaN(42); // false
Number.isNaN('42'); // false (string, not NaN)
Number.isNaN(undefined); // false
Number.isNaN(null); // false
Number.isNaN({}); // false
Comparison: Number.isNaN() vs global isNaN()
The global isNaN() coerces its argument, causing unexpected results:
isNaN('hello'); // true (coerced to NaN)
Number.isNaN('hello'); // false (not the number NaN)
isNaN('42'); // true (coerced to NaN... wait, no: '42' becomes 42!)
Number.isNaN('42'); // false
isNaN(undefined); // true (coerced to NaN)
Number.isNaN(undefined); // false
Practical Example: Safe Division
function safeDivide(a, b) {
if (b === 0) {
return NaN;
}
const result = a / b;
return Number.isNaN(result) ? NaN : result;
}
safeDivide(10, 2); // 5
safeDivide(10, 0); // NaN
safeDivide(0, 0); // NaN
Practical Example: Calculator Results
When building a calculator, you need to handle NaN results gracefully:
function calculate(a, b, operator) {
let result;
switch (operator) {
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/': result = b !== 0 ? a / b : NaN; break;
default: result = NaN;
}
if (Number.isNaN(result)) {
return 'Invalid operation';
}
return result;
}
calculate(10, 5, '+'); // 15
calculate(10, 0, '/'); // "Invalid operation"
calculate(10, 5, '^'); // "Invalid operation"
See Also
Number.isFinite()— Checks if a value is a finite numberNumber.isInteger()— Checks if a value is an integerMath.sqrt()— Computes the square root of a number (returns NaN for negative inputs)Object.is()— Compares two values for equality (handles NaN correctly)