JavaScript中有哪些内置方法用于检查字符串是否为有效数字

解决方案

isNaN()

无论变量内容是字符串还是数字,这都有效。

isNaN(num)         // 返回true,如果该变量没有包含数字
例子
isNaN(123)         // false
isNaN('123')       // false
isNaN('1e10000')   // false (该字符串所表示的数字超出了精度范围,代表正无穷, 所以它是数字)
isNaN('foo')       // true
isNaN('10px')      // true

当然,如果需要,你可以反过来使用:

function isNumeric(num){
  return !isNaN(num)
}

一元运算符+

仅在字符串包含数字字符时才有效,否则返回NaN

+num // 返回字符串中的数字值,当字符串不是一个纯粹的数字,则返回NaN
例子
+'12'              // 12
+'12.'             // 12
+'12..'            // Nan
+'.12'             // 0.12
+'..12'            // Nan
+'foo'             // NaN
+'12px'            // NaN

parseInt会尽可能地将字符串转换为数字

用于将’12px’转换为12,例如:

parseInt(num)  // 从字符串的开头抽取出数字,否则返回NaN
例子
parseInt('12')     // 12
parseInt('aaa')    // NaN
parseInt('12px')   // 12
parseInt('foo2')   // NaN      
parseInt('12a5')   // 12       

浮点数

记住,与+num不同的是,parseInt(顾名思义)将一个浮点数转换为整数通过斩去小数点后面所有的值:

+'12.345'          // 12.345
parseInt(12.345)   // 12
parseInt('12.345') // 12

空字符串

空字符串可能有点特殊。+num将空字符串转换为零,并且isNaN()也把它当做数字:

+''                // 0
isNaN('')          // false

然而parseInt()结果与之相反:

parseInt('')       // NaN
用户头像
登录后发表评论