有没有可能在不使用isNaN的情况下检测到NaN ?

Is it possible to detect NaN without using isNaN?

本文关键字:情况下 检测 NaN isNaN 有可能      更新时间:2023-09-26

我可以用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

因为在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

ECMA 6

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

http://es6-features.org/NumberTypeChecking