I am working on a jQuery plugin and I need to make sure this value is a number, or a string with only a number. So to do this I made the following code, where val is a variable that may or may not be a number.
if (typeof val !== 'number') {//if "val" isn't a number
if (typeof val === 'string' && parseInt(val) !== NaN) {//see if "val" is a string with only a number
val = parseInt(val);
}
}
But for some reason, while testing, even if val is a string with text, it still returns parseInt(val) !== NaN as true. I later tested with the Chrome console, and this is what I got:
As you can see, 'asf' is Not-a-Number. But wherever it returns true, it should return false, and wherever it returns false, it should return true. You can also see that I tested to make sure NaN isn't actually a string.
Above you can see the return values are the same, but this time it is correct.
Am I missing something? Or is there a different way I am supposed to do this?

