试一试:在Node.js或Firefox中,打开一个REPL,然后输入:
Number.isNaN('asdf');
这怎么可能不是NaN
?什么是NaN
,如果不是这样的话?
答案 0 :(得分:3)
答案 1 :(得分:2)
language specification中没有Number.isNaN()
的概念。唯一指定的函数是全局isNaN
(15.1.2.4),它将在任何非数字或无法正确转换为数字的任何内容上正确返回true
。
Number.isNaN
(在NaN
上返回true)是可能是下一个标准草案的实现细节的一部分(参见remyabel' answer),可以在内部使用isNaN
。
答案 2 :(得分:2)
只需注意,似乎是Number.IsNaN
has limited support。
此输出:
console.log(Number.isNaN("blabla"));
提供false
和false !== NaN
:
console.log(false !== NaN)
console.log(false !== Number.NaN);
这是reference:
当使用一个参数号调用Number.isNaN时, 采取以下步骤:
If Type(number) is not Number, return false. If number is NaN, return true. Otherwise, return false.
此函数与全局isNaN函数(18.2.3)的不同之处在于 在确定之前,它不会将其参数转换为数字 是否是NaN。
因为我有1337的声誉,我才知道。
答案 3 :(得分:0)
试试这个:
function checkNaN(value)
{
return value !== value;
}
它的工作原理是因为(我相信)NaN是JS中唯一不能完全等同于它的东西。
答案 4 :(得分:0)
这是EcmaScript 6标准的一部分。
Number.isNaN
返回值是否为NaN而不强制参数。
Number.isNaN("xmfds"); // false
Number.isNaN("ose"); // false
isNaN
会在强制将参数强制转换为Number
类型后返回该值是否为NaN 。
isNaN("ose") -> isNaN( Number("ose") ) -> isNaN(NaN); // true