在IE中,Number.isNaN不存在

时间:2014-11-16 21:38:05

标签: javascript internet-explorer numbers nan

为什么IE不支持 Number.isNaN 功能?我不能使用简单的isNan而不是Number.isNaN'因为这些功能是不同的! 例如:

Number.isNaN("abacada") != isNaN("abacada") //false != true

我需要抽象字符串和数字并检查,是否真的包含 NaN (我的意思是NaN常量,但不是像字符串那样的数字值)。

someobj.someopt = "blah"/0;
someobj.someopt2 = "blah";
someobj.someopt3 = 150;
for(a in someobj) if(Number.isNaN(someobj[a])) alert('!');

该代码应显示一次警报。但如果我将Number.isNaN更改为isNaN,它将发出2次警报。存在差异。

可能存在一些替代功能吗?

2 个答案:

答案 0 :(得分:16)

  

为什么IE不支持 Number.isNaN 功能?

Stack Overflow相当偏离主题,但根据the MDN page for Number.isNaN,它没有在任何标准中定义 - 它只在ECMAScript 6的草案规范中 - 并且Internet Explorer并不是唯一不支持它的浏览器。

  

可能存在一些替代功能吗?

不是,但您可以轻松定义一个:

function myIsNaN(o) {
    return typeof(o) === 'number' && isNaN(o);
}

或者如果您愿意:

function myIsNaN(o) {
    return o !== o;
}

答案 1 :(得分:1)

您需要使用不带“数字”的isNaN。像这样:

for(a in someobj) if(isNaN(someobj[a])) alert('!');

这也适用于镀铬。

您可以在微软网站https://docs.microsoft.com/en-us/scripting/javascript/reference/isnan-function-javascript

上找到更多信息