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

新手上路,请多包涵

我只在 Firefox 的 JavaScript 控制台中尝试过,但以下语句均未返回 true:

parseFloat('geoff') == NaN;

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

原文由 Paul D. Waite 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 701
2 个回答

试试这个代码:

 isNaN(parseFloat("geoff"))

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

原文由 chiborg 发布,翻译遵循 CC BY-SA 3.0 许可协议

我刚刚在 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

原文由 Jazzy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题