如何判断值是否为NaN而不使用isNaN,它具有误报?

时间:2012-04-10 18:56:30

标签: javascript numbers nan

如何在不使用NaN功能的情况下检查输入值是否为isNaN

2 个答案:

答案 0 :(得分:7)

如果您可以使用ECMAScript 6,则可以使用Object.is

return Object.is(obj, NaN);

否则,这是一个选项,来自underscore.js的源代码:

// Is the given value `NaN`?
_.isNaN = function(obj) {
  // `NaN` is the only value for which `===` is not reflexive.
  return obj !== obj;
};

他们对该功能的说明:

  

注意:这与本机isNaN函数不同,如果变量未定义,它也将返回true。

答案 1 :(得分:1)

将输入转换为数字,并检查减法是否不为零:

var x = 'value';
var is_NaN = +x - x !== 0; // The + is actually not needed, but added to show
                           // that a number conversion is made.