function validate(n) {
if (n === NaN) {
console.log('invalid');
} else {
console.log('valid: ' + n);
}
}
validate(NaN);
validate(5);function validate(n) {
if (Number.isNaN(n)) {
console.log('invalid');
} else {
console.log('valid: ' + n);
}
}
validate(NaN);
validate(5);Bug: NaN is the only value not equal to itself. n === NaN is always false for any value, including NaN.
Explanation: Number.isNaN() is the only reliable way to detect NaN. The global isNaN() coerces its argument first — Number.isNaN() does not.
Key Insight: Never use === NaN. NaN !== NaN is always true. Use Number.isNaN().