我只在Firefox的JavaScript控制台中尝试过,但以下语句都没有返回true:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
我只在Firefox的JavaScript控制台中尝试过,但以下语句都没有返回true:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
当前回答
只要要测试类型为Number的值是否为NaN,全局函数isNaN将完成工作
isNaN(any-Number);
对于适用于JS中所有类型的通用方法,我们可以使用以下任何一种方法:
ECMAScript-5用户:
#1
if(x !== x) {
console.info('x is NaN.');
}
else {
console.info('x is NOT a NaN.');
}
对于使用ECMAScript-6的人:
#2
Number.isNaN(x);
为了在ECMAScript 5和6中保持一致性,我们也可以为Number.isNan使用这个填充
#3
//Polyfill from MDN
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
// Or
Number.isNaN = Number.isNaN || function(value) {
return value !== value;
}
请查看这个答案了解更多细节。
其他回答
两种都试试看
if(isNaN(parseFloat('geoff')) && typeof(parseFloat('geoff')) === "number");
//true
简单地将结果转换为String并与'NaN'进行比较。
var val = Number("test");
if(String(val) === 'NaN') {
console.log("true");
}
根据IEEE 754,所有涉及NaN的关系都被评估为假,除了!=。因此,例如,如果A或B或两者都是NaN, (A >= B) = false且(A <= B) = false。
只要要测试类型为Number的值是否为NaN,全局函数isNaN将完成工作
isNaN(any-Number);
对于适用于JS中所有类型的通用方法,我们可以使用以下任何一种方法:
ECMAScript-5用户:
#1
if(x !== x) {
console.info('x is NaN.');
}
else {
console.info('x is NOT a NaN.');
}
对于使用ECMAScript-6的人:
#2
Number.isNaN(x);
为了在ECMAScript 5和6中保持一致性,我们也可以为Number.isNan使用这个填充
#3
//Polyfill from MDN
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
// Or
Number.isNaN = Number.isNaN || function(value) {
return value !== value;
}
请查看这个答案了解更多细节。
使用以下代码:
isNaN('geoff');
参见MDN上的isNaN()文档。
alert ( isNaN('abcd')); // alerts true
alert ( isNaN('2.0')); // alerts false
alert ( isNaN(2.0)); // alerts false