That's true, but I was looking for a solution that could not be tricked by defining a variable on the client side. I know the probability of someone using that particular variable is low, but my proposed solution is fool proof and also simple.
Not sure how to fix it, because isNaN can be overridden.
// NaN typeof is ... number
typeof value === 'number' && value != value
btw, the original isNaN() doesn't check if a value is NaN, it checks if a value is coercible to a number > isNaN("hello world")
true