你如何检查一个数字在JavaScript中是NaN?

2022-08-29 23:06:08

我只是在Firefox的JavaScript控制台中尝试过,但以下两个语句都不返回true:

parseFloat('geoff') == NaN;

parseFloat('geoff') == Number.NaN;

答案 1

试试这个代码:

isNaN(parseFloat("geoff"))

要检查是否有任何值是NaN,而不仅仅是数字,请参阅此处:如何在Javascript中测试NaN?


答案 2

我刚刚在《Effective JavaScript》一书中遇到了这种技术,它非常简单:

由于 NaN 是唯一被视为与自身不相等的 JavaScript 值,因此您始终可以通过检查某个值是否与自身相等来测试该值是否为 NaN:

var a = NaN;
a !== a; // true 

var b = "foo";
b !== b; // false 

var c = undefined; 
c !== c; // false

var d = {};
d !== d; // false

var e = { valueOf: "foo" }; 
e !== e; // false

直到@allsyed评论时才意识到这一点,但这在ECMA规范中:https://tc39.github.io/ecma262/#sec-isnan-number