【问题标题】:Missing concept based on Not a Number (NaN) [duplicate]缺少基于非数字(NaN)的概念[重复]
【发布时间】:2013-12-22 00:50:20
【问题描述】:

这是 JavaScript 代码(使用控制台),对此代码有一点疑问

var foo = 10;
var boo = undefined;

if((foo + boo)==NaN){console.log("Not a Number !!!");}
//>undefined
if((foo + boo)===NaN){console.log("Not a Number !!!");}
//>undefined

//>Not a Number !!!    (Expected)

【问题讨论】:

  • 使用isNan()函数检查是否为NaN
  • 你的问题是什么?
  • 我已经比较了 NaN 和 undefined。
  • 不,你没有。 10 + undefined 导致 NaN。您已经比较了NaN == NaNNaN === NaN

标签: javascript


【解决方案1】:

等式运算符(== 和 ===)不能用于测试值 南。请改用 Number.isNaN() 或 isNaN()。

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN

【讨论】:

    【解决方案2】:

    请参阅下面的 URL 以解决您的问题....

    JavaScript isNaN() Function

    检查一个号码是否为非法号码:

    var a = isNaN(123) + "<br>";
    var b = isNaN(-1.23) + "<br>";
    var c = isNaN(5-2) + "<br>";
    var d = isNaN(0) + "<br>";
    var e = isNaN("Hello") + "<br>";
    var f = isNaN("2005/12/12") + "<br>";
    

    res 的结果是:

     false
     false
     false
     false
     true
     true 
    

    【讨论】:

    • 这不是答案。这只是一个链接,如果链接失效,这篇文章就没用了。答案应该是自包含的。请在您的帖子中包含实际信息。 另外链接到外部内容非常好。除此之外,w3schools 提供的信息不正确(哦,奇怪!)或至少令人困惑:isNaN 不检查一个值是否是“非法数字”(不管是什么),它检查该值是否是NaN,其实是一个很特殊的数值。
    • @FelixKling 谢谢你的建议...
    • 您应该养成参考 MDN 文档 (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 而不是 w3schools 的习惯。原因见w3fools.com
    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    相关资源
    最近更新 更多