【问题标题】:$.isNumeric vs. isNaN$.isNumeric 与 isNaN
【发布时间】:2011-12-22 04:55:24
【问题描述】:

$.isNumeric!isNaN()有什么区别吗?

我看不出他们会在哪里返回不同的结果。

【问题讨论】:

  • 您有什么疑问?我不清楚。
  • isNaN() 专门检查实际的NaN 值,非常不同。
  • @Arif -- 很明显,OP 正在询问 $.isNumericisNaN() 之间的区别。
  • @Orbling 虽然undefined似乎也是NaN。
  • 我认为isNaN("123") 是假的,但isNaN("blah") 是真的,即使它们都是字符串,这很令人困惑。 FWIW,我看不出有什么区别:jsfiddle.net/mblase75/ktxJb

标签: javascript jquery


【解决方案1】:

来自 jQuery 博客:

在 jQuery 中,我们发现了几种情况,我们需要知道参数是否为数字,或者如果它是其他类型则成功转换为数字。我们决定编写并记录 jQuery.isNumeric(),因为它是一个有用的实用程序。将任何类型的参数传递给它,它会根据需要返回 true 或 false。


jQuery.isNaN():这个未记录的实用函数已被删除。它令人困惑,因为它挪用了内置 JavaScript 函数的名称,但没有相同的语义。新的 jQuery.isNumeric() 具有类似的目的,但具有被记录和支持的好处。尽管 jQuery.isNaN() 没有被记录在案,但 Github 上的几个项目都在使用它。我们已联系他们并要求他们使用 jQuery.isNumeric() 或其他解决方案。

另见票:http://bugs.jquery.com/ticket/10478


jQuery 的isNumeric() 检查值是否为数字或是否可以转换为数字。

编辑

进一步阐明 isNan() 的作用(以及 NaN 值是什么):

NaN,意思是“Not-a-Number”,被 ECMA-262 标准归类为原始值,表示指定的值不是合法数字。如果参数不是数字,则函数返回 true,如果参数是数字,则返回 false。

NaN 的经典示例是零除以零,0/0

Code: 
document.write(isNaN("Ima String")) 
document.write(isNaN(0/0)) 
document.write(isNaN("348")) 
document.write(isNaN(348)) 

Output: 
true 
true
false
false

http://www.devguru.com/technologies/ecmascript/quickref/isnan.html

半离题,但相关的是this short talk

【讨论】:

  • 我认为 OP 指的是原生 JS 函数,isNaN()——不是 jQuery 版本。
  • 您的更新与上述 Orbling 的评论相矛盾。据我所知,Orbling 是正确的。
  • 如果是这样,isNaN("123") 将是真的,因为字符串不是数字。相反,它是错误的,因为字符串不是 NaN
  • "字符串不是非数字。" “我知道很多不是数字的字符串。” “不不,那些字符串是什么,不是一个数字。” -- 向 Rosencranz 和 Guildenstern 道歉
  • @KirkWoll:如果我看到NaN,我就知道这意味着什么。忘了强调这一点可能有用。谢谢让我知道!
【解决方案2】:

正如 PeeHaa 所说,$.isNumeric() 检查值是否为数字或可以转换为数字,isNaN() 仅严格检查值是否为 NaN

这是一个使用jQuery documentation's 示例的方便比较图表(比较$.isNumeric()!isNaN 以便于比较):http://jsfiddle.net/eghE9/

【讨论】:

  • 非常感谢 Juhana。我现在已经将它插入到我的示例矩阵中。 phillipsenn.com/Matrix/jQuery/Utilities/jQuery.isNumeric.cfm
  • 如果这个答案以'as PeeHaa says'开头,并且包含的​​信息比他的答案少得多,并且后来发布,为什么它被接受以支持 PeeHaa 的答案? @菲利普
  • 表格说明了一切。使用!isNaN() 检查数字可能会导致意外结果。
猜你喜欢
  • 1970-01-01
  • 2012-01-06
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
相关资源
最近更新 更多