【问题标题】:isNaN not working JavaScriptisNaN 不工作 JavaScript
【发布时间】:2015-11-15 11:22:58
【问题描述】:

我遇到了 isNaN 函数是 JavaScript 的问题。我有一个变量 trc,我知道它不是数字,但我希望我的代码能够分辨出来。不幸的是,isNaN 并没有检测到它不是数字,但是当我使用警报显示变量的值时,它确实不是数字。

trc = parseInt(getCookie("trc"));
cnn = parseInt(getCookie("cnn"));
klove = parseInt(getCookie("klove"));
if (isNaN(trc)) {
  trc = 0;
}
if (getCookie("trc") == undefined) {
  trc = 0;
} else {
  trc = parseInt(getCookie("trc"));
}
alert(trc);

顺便说一句,我有一个单独的函数 getCookie(),我让自己获取 cookie 的值。

【问题讨论】:

  • parseInt 未执行,因为 getCookie 未定义。
  • isNaN() 函数的意思是,“参数是NaN 的值吗?”不是“参数不是数字”。
  • 另请注意,在将 trc 设置为 cookie 值之后,无需中间的 isNaN() 测试即可获得 alert()。如果cookie值不是undefined,那么第二个if语句会将trc设置为将cookie值传递给parseInt()的结果,这可能会返回NaN
  • 您必须提供一些样本数据以使其失败。该功能可能正常工作,只是您对输入的期望错误。
  • 谢谢,死。你和卡米尔是对的。我通过检查 trc > -1 来修复它,因为我的程序运行方式将始终为 0 或更大。当然,如果 trc 不是数字,它不会小于 0。谢谢大家的帮助!

标签: javascript if-statement integer nan parseint


【解决方案1】:

您应该在之前检查trc 的值。 如果trcnull,那么isNaN(null) 返回false。

编辑: parseInt 方法不返回 null 值,但 trc 可以通过外部代码修改 - 因此我建议使用命名空间,例如:

var namespace = namespace || {};
namespace.trc = .....

【讨论】:

  • 我测试 null 仍然给我 NaN。
猜你喜欢
  • 2016-06-15
  • 1970-01-01
  • 2013-08-28
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2014-06-01
相关资源
最近更新 更多