【问题标题】:What exactly does isNaN() do in javaScript? [duplicate]isNaN() 在 JavaScript 中到底做了什么? [复制]
【发布时间】:2016-02-12 16:13:21
【问题描述】:

isNaN() 返回 false 当且仅当参数是数字。

var a = new Number(1);

通过这样做,a 现在是一个对象。 那么为什么isNaN(a) 会返回 false?

【问题讨论】:

  • isNaN 当且仅当其参数是值 NaN 时才返回 true。在所有其他情况下它返回 false。
  • 您还有其他问题吗?如果您的问题得到解决,那么您应该将有助于解决问题的答案标记为已接受。这有助于其他人找到他们正在寻找的东西。快乐编码:)

标签: javascript object methods numbers


【解决方案1】:

isNaN() 测试输入是否不是数字。

var a = new Number(1)

a 是一个数字对象。因此isNaN() 返回false

这是一个不错的documentation,其中包含具有不同边缘情况的isNaN() 行为。不幸的是,其中一些并不像希望的那样直观,因此值得一读。

【讨论】:

  • “应该”isNaN(new Number(1)) 总是 返回true。 (除非实际的 JavaScript 解释器被弄乱了)
  • 好点。我将其改写为更具权威性。
【解决方案2】:

全局isNaN() 函数在测试NaN 之前将其参数强制转换为数值。您的对象干净地转换为数字1,而1 不是NaN

请注意,isNaN("1") 也返回 false,因为字符串 "1" 完全转换为不是 NaN 的数字。

isNaN 函数并不是真正用于测试某事物是否为数字的通用测试。这是对特定数值NaN 的测试。它通常用作通用测试,并且(大部分)有效,因为当尝试将值转换为数字失败时,JavaScript 返回NaN。这有点不纯,因为NaN 在浮点系统中作为具有特定用途的标记存在。

一些 JavaScript 环境除了全局 isNaN 之外还有 Number.isNaN()。 Number 构造函数上的函数不首先执行类型强制。出于这个原因,Number.isNaN("foo") 返回false,因为即使字符串"foo" 不能干净地转换为数字,它也不是常量NaN

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 2014-11-11
    • 1970-01-01
    • 2019-09-05
    • 2015-07-04
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多