4

我可以用 JavaScript 写一个 isNan() 函数吗?JavaScript 可以检查变量是否NaN没有本机isNaN函数吗?

这是一道面试题。

4

3 回答 3

13

如果它是一个数字,并且不等于它自己,它就是 NaN。

注意:正如@pst 所指出的,数字约束是不必要的。NaN似乎是 JS != 本身的唯一值。

于 2013-01-02T19:15:56.047 回答
0

这个问题的完整解决方案:

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
于 2016-04-14T06:15:06.630 回答
-1

ECMA 6

Number.isNaN(42) === false
Number.isNaN(NaN) === true

http://es6-features.org/#NumberTypeChecking

于 2017-02-25T09:05:57.363 回答