如何在不使用NaN
功能的情况下检查输入值是否为isNaN
?
答案 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.