我只在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;
}
请查看这个答案了解更多细节。
其他回答
函数isNotANumber(n) { If (typeof n !== 'number') { 返回true; } == n; }
也许还有这个:
function isNaNCustom(value){
return value.toString() === 'NaN' &&
typeof value !== 'string' &&
typeof value === 'number'
}
只要要测试类型为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函数,因为在JavaScript中:
isNaN(undefined)
-> true
至少,要意识到这一点。
从ES6开始,Object.is(..)是一个新的实用程序,可以用来测试两个值是否绝对相等:
var a = 3 / 'bar';
Object.is(a, NaN); // true