Любая вещь, которая не может быть преобразована в число, должна возвращать true, но строка ""
может быть проанализирована на число, поэтому она возвращает false
console.log(+"")
console.log(Number(""))
console.log(isNaN(""))
Полифилл для isNaN выглядит следующим образом
var isNaN = function(value) {
var n = Number(value);
return n !== n;
};
console.log(isNaN(""))
Примечание: - Когда вы пытаетесь использовать parseInt для этих значений, все становится запутанным. Но спецификации parseInt буквально говорят, что он возвращает NaN the first non-whitespace character cannot be converted to a number.
или radix is below 2 or above 36
.
console.log(parseInt(""))