我可以用 JavaScript 写一个 isNan() 函数吗?JavaScript 可以检查变量是否NaN
没有本机isNaN
函数吗?
这是一道面试题。
如果它是一个数字,并且不等于它自己,它就是 NaN。
注意:正如@pst 所指出的,数字约束是不必要的。NaN
似乎是 JS != 本身的唯一值。
这个问题的完整解决方案:
var is_NaN = function(n) {
return (n !== n);
}
is_NaN(1/'a'); // true
isNaN(1/'a'); // true
因为在 JavaScriptNaN
中不等于自身。表达式NaN === NaN
总是返回false
第二种解决方案:
您可以使用内置isFinite
功能。isFinite
检查输入是否是既不是 Infinity
也不 NaN
是的数字。
isFinite(NaN) // false
isFinite(Infinity) // false
isFinite(1) // true
isFinite(true) // true, because argument true is equal to 1
isFinite('a') // false
isFinite(1/'a') // false
ECMA 6
Number.isNaN(42) === false
Number.isNaN(NaN) === true