我只在Firefox的JavaScript控制台中尝试过,但以下语句都没有返回true:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
我只在Firefox的JavaScript控制台中尝试过,但以下语句都没有返回true:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
当前回答
简单地将结果转换为String并与'NaN'进行比较。
var val = Number("test");
if(String(val) === 'NaN') {
console.log("true");
}
其他回答
简单地将结果转换为String并与'NaN'进行比较。
var val = Number("test");
if(String(val) === 'NaN') {
console.log("true");
}
使用以下代码:
isNaN('geoff');
参见MDN上的isNaN()文档。
alert ( isNaN('abcd')); // alerts true
alert ( isNaN('2.0')); // alerts false
alert ( isNaN(2.0)); // alerts false
也许还有这个:
function isNaNCustom(value){
return value.toString() === 'NaN' &&
typeof value !== 'string' &&
typeof value === 'number'
}
NaN在JavaScript中代表“不是一个数字”,尽管它的类型实际上是数字。
typeof(NaN) // "number"
要检查一个变量的值是否为NaN,我们不能简单地使用函数isNaN(),因为isNaN()有以下问题:
var myVar = "A";
isNaN(myVar) // true, although "A" is not really of value NaN
这里真正发生的是myVar被隐式地强制为一个数字:
var myVar = "A";
isNaN(Number(myVar)) // true. Number(myVar) is NaN here in fact
这是有道理的,因为A实际上不是一个数字。但我们真正想检查的是myVar的值是否为NaN。
因此isNaN()无法提供帮助。那我们该怎么办呢?
鉴于NaN是唯一被视为与自身不相等的JavaScript值,因此我们可以使用!==来检查它是否与自身相等
var myVar; // undefined
myVar !== myVar // false
var myVar = "A";
myVar !== myVar // false
var myVar = NaN
myVar !== myVar // true
所以总结一下,如果一个变量!==本身是正确的,那么这个变量的值正好是NaN:
function isOfValueNaN(v) {
return v !== v;
}
var myVar = "A";
isNaN(myVar); // true
isOfValueNaN(myVar); // false
alert("1234567890.".indexOf(String.fromCharCode(mycharacter))>-1);
这并不优雅。但在尝试isNAN()后,我得到了这个解决方案,这是另一种选择。在这个例子中,我还允许'。'因为我正在为浮动进行屏蔽。您还可以反转此操作,以确保不使用任何数字。
("1234567890".indexOf(String.fromCharCode(mycharacter))==-1)
这是一个单个字符的求值,但您也可以循环遍历字符串以检查任何数字。