我可以用JavaScript编写一个isNan()函数吗? JavaScript可以检查变量是NaN
还是没有原生isNaN
函数吗?
这是一个面试问题。
答案 0 :(得分:12)
如果它是一个数字,并且不等于它自己,那就是NaN。
注意:正如@pst指出的那样,数字约束是不必要的。 NaN
似乎是JS!=本身唯一的值。
答案 1 :(得分:1)
此问题的完整解决方案:
var is_NaN = function(n) {
return (n !== n);
}
is_NaN(1/'a'); // true
isNaN(1/'a'); // true
因为在JavaScript中NaN
不等于它自己。表达式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
答案 2 :(得分:0)
ECMA 6
Number.isNaN(42) === false
Number.isNaN(NaN) === true