$ .isNumeric vs. isNaN

Phi*_*enn 24 javascript jquery

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

我不知道他们会在哪里返回不同的结果.

Pee*_*Haa 26

来自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(意思是"非数字")根据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
Run Code Online (Sandbox Code Playgroud)

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

半offtopic,但相关的是这个简短的谈话

  • 我认为OP是指本机JS函数,`isNaN()` - 而不是jQuery版本. (2认同)
  • "一个字符串不是一个数字." "我知道许多不是数字的字符串." "不,不,这些字符串是什么,不是一个数字." - 向Rosencranz和Guildenstern道歉 (2认同)

JJJ*_*JJJ 13

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

这是一个方便的比较图表,它使用了jQuery文档的示例(比较$.isNumeric()以便!isNaN于比较):http://jsfiddle.net/eghE9/