function isInvalid(value) {
if (value === NaN || value === undefined || value === null) {
return true;
}
return false;
}
console.log(isInvalid(NaN)); // false β BUG!
console.log(isInvalid(undefined)); // true
console.log(isInvalid(null)); // truefunction isInvalid(value) {
if (Number.isNaN(value) || value === undefined || value === null) {
return true;
}
return false;
}
// Cleaner version:
const isInvalid = (value) =>
value == null || Number.isNaN(value);
// value == null catches both null and undefined (loose equality)
console.log(isInvalid(NaN)); // true β
console.log(isInvalid(undefined)); // true β
console.log(isInvalid(null)); // true βBug: NaN is the only value in JS not equal to itself. value === NaN is ALWAYS false, for any value including NaN itself.
Explanation: Use Number.isNaN() to check for NaN β it's the only reliable method. value == null (loose equality) catches both null and undefined at once.
Key Insight: NaN !== NaN always. Use Number.isNaN(). And value == null catches both null AND undefined.