JavaScript isNaN函数
我正在使用isNan函数检查输入的值是否为数字:JavaScript isNaN函数,javascript,jquery,Javascript,Jquery,我正在使用isNan函数检查输入的值是否为数字: if(isNaN(num)) { alert('I am not a number'); } else { // } 然而,如果输入的值是,例如,“5748hh”,它就像一个数字一样可以理解,并返回false。有什么问题吗?您必须先尝试分析它: if(isNaN(parseInt(num, 10))) { 根据报告: 自从最早版本的isNaN函数规范以来,它对非数值参数的行为一直令人困惑当isNaN函数的参数不是数字时,该值
if(isNaN(num)) {
alert('I am not a number');
}
else {
//
}
然而,如果输入的值是,例如,“5748hh”,它就像一个数字一样可以理解,并返回
false
。有什么问题吗?您必须先尝试分析它:
if(isNaN(parseInt(num, 10))) {
根据报告:
自从最早版本的isNaN函数规范以来,它对非数值参数的行为一直令人困惑当isNaN函数的参数不是数字时,该值首先强制为数字。然后测试结果值以确定其是否为NaN。因此,对于非数字,强制为数字类型时会产生有效的非NaN数值(尤其是空字符串和布尔基元,强制时会给出零或一个数值)
与
parseInt()
不同的是,强制使用数字会导致类似5748hh
的字符串没有数字,因此您会看到这种行为。您必须先尝试解析它:
if(isNaN(parseInt(num, 10))) {
根据报告:
自从最早版本的isNaN函数规范以来,它对非数值参数的行为一直令人困惑当isNaN函数的参数不是数字时,该值首先强制为数字。然后测试结果值以确定其是否为NaN。因此,对于非数字,强制为数字类型时会产生有效的非NaN数值(尤其是空字符串和布尔基元,强制时会给出零或一个数值)
与
parseInt()
不同,强制为一个数字会导致像5748hh
这样的字符串没有数字,从而导致您看到的行为。isNaN(“5748hh”)
返回true
isNaN(“5748hh”)
返回true
我试过了,结果是true
alert(isNaN("123hh")); // - alert true.
参见JSfiddler我尝试了它,它给出了正确的答案
alert(isNaN("123hh")); // - alert true.
请参见我的Firebug中的JSfiddler:
>>> isNaN("5748hh")
true
在我的萤火虫中:
>>> isNaN("5748hh")
true
如果您解析一个以数字开头的字符串,它将成功解析为该数字,并忽略该字符串的其余部分。e、 g.
parseInt('56sadfh',10)
将解析为56
。如果要防止这种情况,应该使用正则表达式来检查输入。e、 g
if (!num.match(/[0-9]+/)) {
alert("not a number");
}
如果您解析一个以数字开头的字符串,它将成功解析为该数字,并忽略该字符串的其余部分。e、 g.
parseInt('56sadfh',10)
将解析为56
。如果要防止这种情况,应该使用正则表达式来检查输入。e、 g
if (!num.match(/[0-9]+/)) {
alert("not a number");
}
来自Mozilla MDN
当isNaN函数的参数不是数字时,该值首先强制为数字。然后测试结果值以确定其是否为NaN。因此,对于强制为数字类型时产生有效非NaN数值的非数字(尤其是空字符串和布尔基元,强制时给出数值零或一),“false”返回值可能是意外的;例如,空字符串肯定是“不是数字”。混淆源于“不是数字”一词对表示为IEEE-794浮点值的数字有特定的含义。该函数应解释为回答以下问题:“当强制为数值时,该值是否为IEEE-794‘不是数字’值?”
因此alert(isNaN('45345ll'))
返回true,因为其值强制与parseInt/parseFloat
转换不同e、 g 由于Mozilla MDN的
if
语句中缺少参数,可能会得到一个意外值
当isNaN函数的参数不是数字时,该值首先强制为数字。然后测试结果值以确定其是否为NaN。因此,对于强制为数字类型时产生有效非NaN数值的非数字(尤其是空字符串和布尔基元,强制时给出数值零或一),“false”返回值可能是意外的;例如,空字符串肯定是“不是数字”。混淆源于“不是数字”一词对表示为IEEE-794浮点值的数字有特定的含义。该函数应解释为回答以下问题:“当强制为数值时,该值是否为IEEE-794‘不是数字’值?”
因此alert(isNaN('45345ll'))
返回true,因为其值强制与parseInt/parseFloat
转换不同e、 g
如果
语句isNaN=不是一个数字,那么如果它返回true,那么输入的数据就不是一个数字,那么您可能会由于语句中缺少paren而得到一个意外值
返回true:“不是一个数字”,就像它应该的那样。isNaN=不是一个数字,因此如果它返回true,则输入的数据不是一个数字
返回true:“不是一个数字”,就像它应该的那样。NaN是一个特殊的数字。
isNaN(argument)函数检查参数是否为NaN值,但如果参数为字符串(表示有效整数),则也会给出true。NaN是一个特殊数字。
isNaN(argument)函数检查参数是否为NaN值,但如果参数为字符串,表示有效整数,它也会给出true。在本例中,您需要正确关闭括号:)在num之后缺少一个结束符。isNaN(“5748hh”)==true代码>什么不起作用?在本例中,您需要正确地关闭括号:)在num之后缺少一个结束符。)isNaN(“5748hh”)==true代码>什么不起作用?这实际上从字符串“5478hh”返回了一个有效的数字5748。@zvona OP说“5748hh”这就像一个数字一样可以理解,因此我理解示例字符串应该返回数字5748
@ShadowWizard强制与转换不同,因此5748aa